c++ - 私有(private)继承是否总是意味着 "HAS-A"?

标签 c++ inheritance implementation noncopyable

根据我最喜欢的作者,Mr Scott Meyersprivate 继承和组合意味着同样的事情,也就是 Has-A 关系。因此,可以从组合中获得的所有内容(包含,当类 A 具有类 B 作为其成员时)都可以通过私有(private)继承获得,反之亦然。

所以下面的代码应该是Has-A关系,但在我看来,不是!

class A : private boost::noncopyable {.. this is irrelevant };

谁能告诉我我失踪了?或者这段代码如何通过组合来实现?

最佳答案

你的例子可以通过这样的组合来实现:

class A {
private:
    class B {
        B(const B&) = delete;
        B& operator=(const B&) = delete;
    } b;
};

A 是不可复制的,因为它的成员 b 是不可复制的。

关于c++ - 私有(private)继承是否总是意味着 "HAS-A"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50680367/

相关文章:

C++ - 我可以创建编译时变量对象吗?

html - 为什么 text-decoration 会停止基于子元素定位的继承?

c++ - 是否有像 docco 这样的 C/C++ 源代码文档生成器?

algorithm - 生成前 n 个自然数的随机排列的最有效方法是什么?

python - Python 中具有接口(interface)和继承的多级抽象

c - 声明一个静态函数但在 C 中没有 'static' 关键字实现它?

c++ - 内联函数会导致大小增加多少?

c++ - 无法通过 `const DictionaryKey' 传递类型为 `...' 的对象

c++ - 1 channel 位图到 SDL_Texture

c++ - 模板基类的子类的模板特化