C++ : Base type member variables as References, 或指针

标签 c++ inheritance class-members

我想知道在 C++ 中解决设计困境的最佳方法是什么......

我有一个类,其中包含另一个类的Base类型的成员变量,并且创建的真实对象被创建为Base<的Derived/

类不需要修改这些变量,它只是使用它们。其他人正在创建这些变量。这些派生类还需要转到我的类中的容器(std::vector、QList 等)类,因此它们应该执行正确的复制构造和赋值。

所以,我想知道什么是最好的:

  1. 将成员变量创建为Base*,让我们管理它们以及它们使用的内存。这会导致经典的内存泄漏问题...有人只是在不再使用该对象时忘记删除该对象。
  2. 将成员变量创建为 Base&,并祈祷它们在超出某个范围时不会消失。

最佳答案

拥有引用成员变量始终是一个糟糕的选择,因为编译器生成的赋值和移动赋值会做错误的事情,或者不是人们所期望的。

坚持使用指针或智能指针作为成员变量。

关于C++ : Base type member variables as References, 或指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174581/

相关文章:

ruby - 当我可以继承而不使用它时,为什么我们在 ruby​​ 中使用 super?

matlab - 为重载的 `end` 函数创建函数句柄

python - 将元类规则应用于所有后代而不是直接元类

C++:如何重用我的模板代码

c# - 无法在 C# 中将子接口(interface)作为参数传递

c++ - 对随机序列进行下采样会降低它的随机性吗?有没有一个原则/定理可以证明这一点?

python - 用父类初始化子类

c++ - C++ 中的类私有(private)成员是否保证内存顺序?

c++ - 重写虚方法时无法返回派生类指针

c++ - 我的文件输出到屏幕两次 C++?