派生类的组合
Composition of derived classes
我有一个关于c++中的组合和继承的问题:
我有一个基类'A'
和一个派生类'B'
('B'
继承'A'
的成员),是否有可能使用'B'
作为'A'
的组成成员?
至于"A有B成员,B从A派生":实际上,你不能声明这样的事情。如果类A有类型B的成员,则需要在A之前声明B。如果B使用A作为基类,则必须在B之前声明A。
至于组合,如果你想做这样的事情,你可能不得不使用间接(指针,智能指针等)。
class B;
class A {
B *b;
};
class B : public A {
};
有人可能会说(在c++中)使用指针不是复合;然而,在Java中,所有的对象都是"指针",所以组合是:
class A {
B b;
}
class B extends A {
}
但是您可以嵌入B*
字段。因此,const B&
也应该是可能的,并且表现得像B
。(注意我现在是一个沙盒java程序员)
class B;
class A {
B& b;
};
顺便说一句,你甚至可能不会在A中嵌入A。
相关文章:
- 为什么使用 "this" 指针调用派生成员函数?
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 可组合的lambda/std::函数与std::可选
- 在派生函数中指定void*参数
- 如何通过派生类函数更改基类中的向量
- 如何委托派生类使用其父构造函数?
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 如何使用单独文件中的派生类访问友元函数对象
- 派生类销毁的最佳实践是什么
- 混合组合和继承的C++问题
- 如何使用基类指针引用派生类成员
- 派生类是否可以在抽象工厂设计模式中具有数据成员
- 我需要将多个函数组合为一个函数
- 使用基类指针创建对象时,缺少派生类析构函数
- 如何引用基类的派生类?
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 如何组合切片、模板和非派生类
- 派生类的组合
- 如何正确组合来自基类和派生类的函数以避免警告