根据我最喜欢的作者,Mr Scott Meyers,私人继承和构成意味着同样的事情,即Has-A关系.因此,可以通过私有继承获得从组合中获得的所有东西(包含A类,其中A类具有B类成员),反之亦然.
所以下面的代码应该是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是不可复制的.