要想让两个boost::shared_ptr指针指向同一个实例对象,那么在赋值时要注意,应该使用以下的形式:
这时候,输出的object count值为2,表示有两个智能指针指向同一个实例对象,而不能如下:
表面看起来,在初始化阶段,两个shared_ptr都是使用了同一个原生指针进行初始化,应该是指向同一块内存才对,但事实上采用这种初始化方式,把p赋值给pB后,pA所管理的引用计数,并不会随之增加一,因为该引用计数值不是一个静态变量,不是每个类对象都操纵同一个引用计数值变量。同样的,下面的赋值方法也不行:
所以,如果想在两个不同的类中管理一个相同类型的shared_ptr变量,即两个对象管理了同一块内存的话,可以仿照下面的代码实现:
Copyright @ 游戏研究院 Powered by: .Text and ASP.NET Theme by: .NET Monster