根据我最喜欢的作者,Mr Scott Meyers ,private 继承和组合意味着同样的事情,也就是 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/