2013-12-11 82 views
0

过去几天我一直在阅读C++ Primer,并且遇到了令人困惑的问题。在本书中,它指出为了在同一类的对象之间共享成员变量,我们必须使用动态内存分配。我想知道,但我们不能也使用static关键字来实现相同的目的吗?共享成员静态或动态内存分配C++

+0

您可以同时使用,取决于您的需求。静态成员变量在类的所有实例中都是可见的,而您将需要一些机制来共享指向动态内存的指针,可能有一些依赖性注入。但考虑软/深拷贝等问题 – dousin

回答

0

的区别在于是否要分享所有类的一些实例之间的(成员)物体之间。

静态成员在所有实例之间共享,即它们根本没有耦合到实例。它们只存在过一次(即使根本没有实例)。

但有些情况下,您希望在之间共享同一成员对象,其中一些实例。想一想树形数据结构。父节点引用就是一个很好的例子:所有兄弟姐妹都共享同一个父代。父母未在各兄弟内分配;那将意味着它存在多次,这将是错误的。我们通常使用指针或引用间接指向父节点;在C++ 11中(或者通过库使用以前的标准),我们有弱或共享的智能指针。

1

可能,但是这是服务于其他目的,一般来说不是一件好事情,无论如何。本书可能意味着在部分或全部对象之间共享可能具有未知大小的数据。如果没有,至少它可能想阻止你使用static成员变量。