2008-11-02 59 views

回答

20

它是不是安全通过参考扩大范围。当obj1超出范围时,C++中的对象不会被引用计数,它将被删除,引用badIdea()的结果只会让你陷入困境

+0

问题是关于C++和参照结合。引用计数不会进入它。我已经添加了自己的答案,但是简要地说,您可以*通过引用绑定来扩展对象的范围,但在您的设计中应该小心。不要这样做,如果你不明白。 – 2008-11-02 17:13:48

0

请说明你的意思。

假定你打算这样做:

int * p = NULL; 
{ 
    int y = 22; 
    p = &y; 
} 
*p = 77; // BOOM! 

然后不,绝对不是,范围不得到由具有参考延长。

你可能想看看智能指针,例如从Boost库:clickety

+0

我的意思的引用,而不是指针 – 2008-11-02 10:28:16

+1

引用作用相同的指针,只有它们不能被重新绑定 – peterchen 2008-11-02 11:57:11

14

只有在引用范围内扩展范围才可以namespace或函数作用域中的const引用(不包括类成员)。

const int & cir = 1+1; // OK to use cir = 2 after this line 

这招在Andrei Alexandrescu's非常凉爽scope guard使用,以捕获const参照基类的具体范围后卫。