共享成员静态或动态内存分配C ++

时间:2013-12-11 18:29:14

标签: c++

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

2 个答案:

答案 0 :(得分:1)

可能,但这完全符合其他目的,一般而言,使用它并不是一件好事。这本书可能意味着在一些或所有对象之间共享可能未知大小的数据。如果没有,至少它可能不鼓励你使用static成员变量。

答案 1 :(得分:0)

区别在于您是否要在班级的所有某些实例之间共享(成员)对象。

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

但是在某些情况下,您希望在某些实例之间共享相同的成员对象。想想树数据结构。父节点引用是一个完美的示例:所有兄弟节点共享同一个父节点。父级未在每个兄弟中分配;这意味着它存在多次,这是错误的。我们通常使用指针或引用来间接指向父节点;在C ++ 11中(或通过使用库的先前标准),我们有弱或共享的智能指针。