过去几天我一直在阅读C++ Primer,并且遇到了令人困惑的问题。在本书中,它指出为了在同一类的对象之间共享成员变量,我们必须使用动态内存分配。我想知道,但我们不能也使用static关键字来实现相同的目的吗?共享成员静态或动态内存分配C++
0
A
回答
0
的区别在于是否要分享所有或类的一些实例之间的(成员)物体之间。
静态成员在所有实例之间共享,即它们根本没有耦合到实例。它们只存在过一次(即使根本没有实例)。
但有些情况下,您希望在之间共享同一成员对象,其中一些实例。想一想树形数据结构。父节点引用就是一个很好的例子:所有兄弟姐妹都共享同一个父代。父母未在各兄弟内分配;那将意味着它存在多次,这将是错误的。我们通常使用指针或引用间接指向父节点;在C++ 11中(或者通过库使用以前的标准),我们有弱或共享的智能指针。
1
你可能,但是这是服务于其他目的,一般来说不是一件好事情,无论如何。本书可能意味着在部分或全部对象之间共享可能具有未知大小的数据。如果没有,至少它可能想阻止你使用static
成员变量。
相关问题
- 1. 静态与动态CUDA共享内存分配的性能
- 2. GPU 2D共享内存动态分配
- 3. C/C++动态或静态内存分配?用C
- 4. 泛型类共享静态成员吗?
- 5. 动态与静态内存分配
- 6. 我们如何从共享内存中分配动态内存?
- 7. 使用MapViewOfFile分配静态共享内存
- 8. 静态VS堆栈动态共享内存
- 9. C++静态成员
- 10. 哪一个更好Singleton类或共享(静态)成员函数
- 11. C++从公共静态方法访问私有静态成员?
- 12. 共享(静态)类与C#的活动
- 13. 在Nvidia的opencl中的共享内存中的动态分配
- 14. 访问静态成员静态成员
- 15. 静态成员变量分配时间
- 16. 静态类/成员分配在哪里?
- 17. 混合静态和动态(共享)库?
- 18. java静态成员内存泄漏
- 19. 动态内存分配在C++上的动态分配内存中
- 20. C++(非内置/类)静态成员
- 21. 误差在CUDA共享存储器静态分配
- 22. 内存中的静态成员和静态全局变量
- 23. 动态分配或浪费内存?
- 24. 静态constexpr成员存储
- 25. C++:静态成员变量
- 26. C++静态成员变量
- 27. C++类的静态成员
- 28. C++类的静态成员
- 29. C++:复制静态成员?
- 30. C#:静态成员VS实例成员
您可以同时使用,取决于您的需求。静态成员变量在类的所有实例中都是可见的,而您将需要一些机制来共享指向动态内存的指针,可能有一些依赖性注入。但考虑软/深拷贝等问题 – dousin