Q
抽象类之间的组合
2
A
回答
4
是:
class A
{
virtual ~A() = 0;
};
class B
{
virtual ~B() = 0;
A* mA;
};
你被允许有一个指针来抽象类型。
0
您可以使用指针或对其他类的引用。例如:
class A {
public:
virtual void m() = 0;
virtual ~A() { }
};
class B {
public:
virtual void m() = 0;
virtual ~A() { }
private:
boost::scoped_ptr<A> a;
};
在C++ 11可以使用std::unique_ptr
代替。请注意,这使得B
不可复制,这对使用子类型多态的类来说有点常见。
+0
您宣布为私人会员;由于B是抽象的,难道不是要宣布它是受保护的吗? – Ale
相关问题
- 1. MustInherit和抽象类之间的区别
- 2. python抽象基类,mixin和抽象方法之间的区别
- 3. 在抽象类之间传递数据
- 4. 抽象类数组
- 5. XSD:抽象类集合
- 6. 如何聚合抽象类?
- 7. 抽象数据类型和对象之间的区别
- 8. 抽象类扩展和普通类之间的区别延伸
- 9. java - 抽象类和具体类之间的独特区别
- 10. 抽象类中的方法的外部抽象和局部抽象之间有什么区别?
- 11. 使用抽象类中抽象类的引用抽象类c
- 12. 传递对象在活动之间延伸抽象类
- 13. 抽象类中的动态抽象类
- 14. 抽象基类的抽象子类
- 15. 抽象模型之间的Django外键
- 16. 抽象类和静态类之间有什么区别?
- 17. C++中的抽象类和类组织
- 18. JSF组件库之前的抽象
- 19. 合同类别应为抽象类别
- 20. 抽象与抽象类
- 21. 抽象类和接口之间的技术区别
- 22. 我需要帮助了解抽象类之间的关系
- 23. 抽象类和接口之间的区别?
- 24. 提供访问抽象类的集合
- 25. Spring MVC的抽象类结合
- 26. 具有零参数的抽象类和没有参数的抽象类之间有什么区别?
- 27. 使用的类,抽象,接口组合扩展
- 28. 如何注释抽象类实例的组合?
- 29. 从非抽象类派生抽象类
- 30. 抽象基类有抽象嵌套类
它不是A和B之间的聚合吗? mA不住在B之外吗?为了建立毫安的一生的责任问候B,我应该把B ::〜B {删除mA;} ...这是否正确? (如此虚拟〜B()而不虚拟〜B()= 0) – Ale
不是必需的。责任是一个逻辑事物。您不必在B内部创建mA。您可以从外部指派它,并委托责任将其摧毁到课外。 –