我想知道在 C++ 中解决设计困境的最佳方法是什么......
我有一个类,其中包含另一个类的Base
类型的成员变量,并且创建的真实对象被创建为Base<的
。 Derived
/
类不需要修改这些变量,它只是使用它们。其他人正在创建这些变量。这些派生类还需要转到我的类中的容器(std::vector、QList 等)类,因此它们应该执行正确的复制构造和赋值。
所以,我想知道什么是最好的:
- 将成员变量创建为
Base*
,让我们管理它们以及它们使用的内存。这会导致经典的内存泄漏问题...有人只是在不再使用该对象时忘记删除该对象。 - 将成员变量创建为
Base&
,并祈祷它们在超出某个范围时不会消失。
最佳答案
拥有引用成员变量始终是一个糟糕的选择,因为编译器生成的赋值和移动赋值会做错误的事情,或者不是人们所期望的。
坚持使用指针或智能指针作为成员变量。
关于C++ : Base type member variables as References, 或指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12174581/