我在面向对象设计的上下文中有一个关于组合的简单问题。 在C ++中,如果我要实现某个类由其他类组成,我会执行以下操作:
class foo {
private : bar b; // composition (foo is composed of bar)
};
但如果我这样做:
class foo {
public:
virtual ~foo() {
delete b;
b = NULL;
}
private :
bar *b = new bar();
}
这是否意味着foo由bar组成?我想认为它是一个长期的关联而不是组合(因为foo的大小不会因为bar而增加;只有指针的大小被额外添加)但是这也可以被认为是组合?