题
在C ++中,通过引用扩展范围是否安全?
在代码中,我的意思是:
MyCLass& function badIdea()
{
MyClass obj1;
...
return obj1;
}
解决方案
通过引用扩展范围是不安全的。当obj1超出范围时,C ++中的对象不被引用计数它将被删除,引用badIdea()的结果只会让你陷入麻烦
其他提示
使用引用扩展作用域的唯一地方是 namespace
或函数作用域中的 const
引用(不是类成员)。
const int & cir = 1+1; // OK to use cir = 2 after this line
这个技巧用于 Andrei Alexandrescu's 非常酷范围保护,以便捕获对具体范围保护的基类的 const
引用。
请澄清你的意思。
假设您打算这样做:
int * p = NULL;
{
int y = 22;
p = &y;
}
*p = 77; // BOOM!
然后不,绝对不会,通过引用来扩展范围。
您可能需要查看智能指针,例如来自boost库: clickety
不隶属于 StackOverflow