抽象类之间的组合
Composition between abstract classes
是否有可能在两个抽象类之间建立组合(而不是聚合)关系?
我不这么认为,因为我不能实例化一个抽象类。但也许有一个简单的方法。
是:
class A
{
virtual ~A() = 0;
};
class B
{
virtual ~B() = 0;
A* mA;
};
允许有指向抽象类型的指针
可以使用指向另一个类的指针或引用。例如:
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
不可复制——这在使用子类型多态性的类中比较常见。
相关文章:
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- int(c) 和 c-'0' 之间的区别。C++
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 可组合的lambda/std::函数与std::可选
- 在cuda线程之间共享大量常量数据
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 在c代码之间共享数据的最佳方式
- Mix_Init和Mix_OpenAudio SDL之间的区别是什么
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- std::atomic和std::condition_variable wait,notify_*方法之间的区别
- 大小相等但成员数量不同的结构之间的性能差异
- 混合组合和继承的C++问题
- 找到组合对之间共享元素的最佳方式
- 如何使用某些MPI命令(或组合命令)之间在两个处理器之间交换2D数组中存储的数据
- 整数/浮点数/字符串值之间的操作,组合太多
- 类之间的聚合和组合关系
- 抽象类之间的组合
- 试图理解c++类之间的组合
- 类之间的关系——继承和组合