2012-11-27 54 views

回答

4

operator*已經返回引用:

T& ref = *ptr; 

或者,我想我可以給出一個更有意義的例子:

void doSomething(std::vector<int>& v) 
{ 
    v.push_back(3); 
} 

auto p = std::make_shared<std::vector<int>>(); 

//This: 
doSomething(*p); 

//Is just as valid as this: 
vector<int> v; 
doSomething(v); 

(請注意,這是當然的無效使用引用已釋放對象的引用保持對對象的引用與保留shared_ptr實例的效果不同如果shared_ptr實例的計數降至0,則不管多少個對象都將被釋放refe )

+0

即使在很小的例子中,使用好樣式也許會更好:'auto p = std :: make_shared >();' – GManNickG

+0

@GManNickG是的,可能是真的。將在一秒鐘內編輯。 (我實際上並不確定我是否會在這裏使用'auto',看起來更清楚的是使用shared_ptr,但我總共編寫了大約200行C++ 11,所以我不太熟悉好的做法/習慣於C++ 11。) – Corbin

+0

是否有共享引用的概念? (所以當refs在範圍內時counter不會變爲0)? – myWallJSON

相關問題