在类中包含对象还是从该类派生出来的更好?

时间:2015-01-19 08:52:40

标签: c++

我是C ++的新手,我想从一开始就学习好习惯,所以我的问题用一个例子来解释:

有:

class A
{
    int mNumber;
};

如果我需要在B类中使用A类,那么更好的是包含一个对象?

class B
{
    A * mpA;
    int mColor;
};

或继承自A类?

class B : public A
{
    int mColor;
};

有没有什么好习惯以一般的方式谈论这个?

1 个答案:

答案 0 :(得分:2)

首选组合而非继承 - 但请记住,对于每种特定情况,另一种方法可能更好。

作文是:

class A
{
    B b;
};

继承是:

class A : public B
{
};

当关系为" has-a"时使用第一个而后者是"是-a"。

你的例子是一种松散的构成 - 如果成员是一个指针,它并不(必然)表示所有权。