【发布时间】:2012-08-29 09:18:08
【问题描述】:
我想知道在 C++ 中解决设计困境的最佳方法可能是什么...
我有一个类,其中包含另一个类的Base 类型的成员变量,并且创建的真实对象创建为Derived 的Base。
类不需要修改这些变量,它只是使用它们。其他人正在创建这些变量。这些Derived 类还需要转到我类中的容器(std::vector、QList 等)类,因此它们应该执行正确的复制构造和分配。
所以,我想知道什么是最好的:
- 将成员变量创建为
Base*,让我们管理它们以及它们使用的内存。这会导致典型的内存泄漏问题...有人在不再使用对象时忘记删除它。 - 将成员变量创建为
Base&,让我们祈祷它们在超出范围时不会消失。
【问题讨论】:
-
做到这一点(以及其他一切)的最佳方法是在分配和释放变量时始终小心。
-
"Someone just forgets to delete the object" -- 不,如果“we”(这个类)在管理内存,那么“someone”不会忘记删除对象,我们忘记删除对象。永远不应该有“记住”删除某些东西的问题——每当你分配一个对象时,你决定谁负责释放它。该类/函数/任何确保它被释放,并且您编写代码以立即执行此操作。几乎总是将其直接放入智能指针中。不要一开始就抱有“有人必须释放它”的模糊想法,这样你就不会不释放它。
标签: c++ inheritance class-members