过去几天我一直在阅读C ++ Primer,我遇到了一个令人困惑的问题。在书中它指出,为了在同一个类的对象之间共享成员变量,我们必须使用动态内存分配。我当时想知道,我们不能也使用static关键字来实现同样的目标吗?
答案 0 :(得分:1)
你可能,但这完全符合其他目的,一般而言,使用它并不是一件好事。这本书可能意味着在一些或所有对象之间共享可能未知大小的数据。如果没有,至少它可能不鼓励你使用static
成员变量。
答案 1 :(得分:0)
区别在于您是否要在班级的所有或某些实例之间共享(成员)对象。
静态成员在所有实例之间共享,即它们根本没有耦合到实例。它们只存在一次(即使根本没有实例)。
但是在某些情况下,您希望在某些实例之间共享相同的成员对象。想想树数据结构。父节点引用是一个完美的示例:所有兄弟节点共享同一个父节点。父级未在每个兄弟中分配;这意味着它存在多次,这是错误的。我们通常使用指针或引用来间接指向父节点;在C ++ 11中(或通过使用库的先前标准),我们有弱或共享的智能指针。