c++ - 在类中包含对象还是更好地从该类派生?

标签 c++

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

拥有:

class A
{
    int mNumber;
};

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

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

还是继承A类?

class B : public A
{
    int mColor;
};

有什么好的习惯可以用一般的方式来做到这一点吗?

最佳答案

优先选择组合而不是继承 - 但请记住,对于每种特定情况,其他方法可能会更好。

组成是:

class A
{
    B b;
};

继承是:

class A : public B
{
};

当关系为“has-a”时使用第一个,当关系为“is-a”时使用后者。

您的示例是松散类型的组合 - 如果成员是指针,它并不(必然)表示所有权。

关于c++ - 在类中包含对象还是更好地从该类派生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28020843/

相关文章:

c++ - 为什么 std::map::operator[] 如此违反直觉?

c++ - 多边形分割与三角剖分

c++ - 如何将 QVector 作为可选参数传递给 C++ 中的函数?

c++ - CMake 子项目不能调用 OpenGL 函数,但父项目可以

android - 安卓版 Qt : change the application icon

c++ - 尽可能在编译时强制执行函数契约

c++ - 为什么 ofstream 将我未包含的值写入我的文件?

c++ - 浮点除以零的行为

C++ STL Vector 相当于 Rust 中的 set_len()

c++ - 包含在 header 或 cpp 中——Qt 中首选的是什么