Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;入门12.1:我可以用静态向量实现StrBlob吗<;字符串>;班内成员? 在C++入门版第12部分(第457页)作者试图证明一个点,即可以使用SysDypPTR在多个对象之间共享数据。_C++_Shared Ptr_Static Members - Fatal编程技术网

C++;入门12.1:我可以用静态向量实现StrBlob吗<;字符串>;班内成员? 在C++入门版第12部分(第457页)作者试图证明一个点,即可以使用SysDypPTR在多个对象之间共享数据。

C++;入门12.1:我可以用静态向量实现StrBlob吗<;字符串>;班内成员? 在C++入门版第12部分(第457页)作者试图证明一个点,即可以使用SysDypPTR在多个对象之间共享数据。,c++,shared-ptr,static-members,C++,Shared Ptr,Static Members,然而,在我看来,最简单的方法是在类中定义一个静态成员,该成员在所有对象之间自动共享。我们甚至不需要麻烦使用共享的ptr。 我认为教科书中已经有了一个解决方案,并试图找到这个解决方案的问题 关于这一点有什么想法,以及编写真实代码的最佳实践是什么?使用共享的ptr可以在T类型的对象子集之间共享数据,静态的成员变量在T的所有实例中共享一个值。正如你所看到的,前者要灵活得多 一个例子是共享ptr本身的实现。引用计数在指向同一对象的所有共享指针之间共享,管理另一个对象的指针将具有单独的共享引用计数,依此类

然而,在我看来,最简单的方法是在类中定义一个静态成员,该成员在所有对象之间自动共享。我们甚至不需要麻烦使用共享的ptr。 我认为教科书中已经有了一个解决方案,并试图找到这个解决方案的问题


关于这一点有什么想法,以及编写真实代码的最佳实践是什么?

使用
共享的ptr
可以在
T
类型的对象子集之间共享数据,
静态的
成员变量在
T
的所有实例中共享一个值。正如你所看到的,前者要灵活得多


一个例子是
共享ptr
本身的实现。引用计数在指向同一对象的所有共享指针之间共享,管理另一个对象的指针将具有单独的共享引用计数,依此类推。

static
用于在对象的所有实例之间共享变量,但是,如果您只想在多个变量之间共享,该怎么办?
静态变量也将一直存在到程序结束。一旦引用计数达到零,共享的
ptr
将被销毁(不过支持魔法仍然有效)。也就是说,
static
可能是这项工作的合适工具。更明确的情况是,不同的类共享相同的
shared\u ptr
。假设在
向量中有一个对象来维持顺序,在
集合中又有一个对象来高速查找。@user4581301类类型的全局和静态变量在程序执行过程中的某个点被销毁,它们不会永远存在。真正由智能指针管理的对象(如
shared\u ptr
)会一直存在到最后一个所有者离开:如果
shared\u ptr
一直存在,原则上它保证受控对象也会保留。感谢您的回答。是的,我没有意识到
shared\u ptr
在更细粒度的共享对象操作方式上提供了更大的灵活性。