来自多个类别的C 多态性
c++ polymorphism from multiple classes
本文关键字:多态性 更新时间:2023-10-16
无论如何是否有一种"堆叠继承",您可以根据其他调用代替基类的多个功能?
例如:
class Base {
void func1(){/* do something */}
void func2(){/* do something */}
};
class A1 {
void func1(){/* do something else */}
};
class A2 {
void func2(){/* do something else */}
};
int main(){
A1 a1obj = new A1();
A2 a2obj = new A2();
Base obj = new Base();
obj = &a1obj;
obj = &a2obj;
obj.func1(); //now A1::func1()
obj.func2(); //now A2::func2()
}
谢谢
在C 中有虚拟函数和多个继承(应避免使用)。
在这种情况下您可以做的是:
class Base {
virtual void func1(){/* do something */}
virtual void func2(){/* do something */}
};
class A1: public Base {
void func1() override {/* do something else */}
};
class A2: public A1 {
void func2() override {/* do something else */}
};
int main(){
A2 a2obj;
Base* obj = &a2obj;
obj->func1(); //now A1::func1()
obj->func2(); //now A2::func2()
}
您甚至可以跳过实例化基础对象,然后做
int main(){
A2 obj;
obj.func1(); //now A1::func1()
obj.func2(); //now A2::func2()
}
相关文章:
- 多态性和功能结合
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- C++boost序列化多态性问题
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 如何在多线程中正确使用unique_ptr进行多态性?
- 具有智能指针的多态性
- 在 C++ 中在堆栈上创建实例时如何保持多态性?
- 继承/多态性 - 我是否被迫使用"protected"变量?
- C++ 多态性在代码::块 17.12 中不起作用
- C++ 泛型和多态性:这种模式可行吗?
- 为什么我们实际上需要运行时多态性?
- 如何在这个简单的最小示例中实现多态性?
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 无法初始化已知大小的矢量指针,该大小不会因多态性而更改
- 运行时多态性和dynamic_cast需要澄清
- 如何调用指针类型的方法(禁用多态性)?
- 从基类调用函数的多态性
- 运行时多态性 - 箭头运算符访问了错误的成员?
- 为什么我在虚幻引擎中的多态性和接口方面遇到问题?