2015-02-10 79 views
-3

目前,我正在使用來自Boost庫的共享指針。來自Boost庫的共享指針

class A 
{ 
}; 
main 
{ 
    boost::shared_ptr<class A> classpointer; 
} 

在什麼情況下,「classpointer」計數器會遞增?

+3

但是你沒有使用boost庫的共享指針。 – juanchopanza 2015-02-10 10:27:24

+0

抱歉Juanchopanza我應該使用boost而不是std,現在它已被正確編輯。請幫助我。 – 2015-02-10 10:33:05

回答

1

目前,指針是空的,計數爲零。

當您分配一個對象的所有權,例如

classpointer.reset(new A); // owns the object, count=1 

,如果你複製這個指針,或者共享同一個對象的所有權的任何其他指針計數將增加將增加一個。如果銷燬任何這樣的指針,或者將其重新分配給不同的對象,或將其重置爲空,它將被遞減。

通常,特定對象的計數等於當前共享所有權的共享指針的數量。當計數變爲零時,以便沒有指針保持共享所有權,該對象將被自動刪除。