【发布时间】:2014-01-02 20:48:35
【问题描述】:
假设我有两个班级
Base 管理一些内存。它具有工作移动、交换、分配和析构函数。 Derived 不会添加任何需要管理的新内容(没有新的内存分配)。
class Base
{
public:
Base();
Base(const Base& other);
friend void swap(Base& a, Base& b);
Base(Base&& other);
protected:
int** some2Darray;
int w, h;
};
class Derived : public Base
{
public:
Derived();
//...?
};
我是否需要在派生类中实现所有这些功能才能让它变得更好?如何重用基类中的这些功能?我不需要在这个类中管理更多内存。
如果我将成员添加到 Derived 类,这些函数会是什么样子?我应该完全重写所有这些函数还是有一些方法可以使用例如“复制”基类并在复制构造函数中额外复制一个添加的成员?
【问题讨论】:
-
一定要继承,组合不行吗?如果您只想让
Derived能够访问由Base管理的资源,您只需将Base成员添加到Derived。 -
这看起来很经典XY question
标签: c++ inheritance