2008-11-02 61 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參照基類的具體範圍後衛。