是否有一种“堆叠继承”,您可以根据其他调用替换基类的潜在多个函数?
例如:
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()
}
您甚至可以跳过实例化 Base 对象而直接执行
int main(){
A2 obj;
obj.func1(); //now A1::func1()
obj.func2(); //now A2::func2()
}
关于来自多个类的 C++ 多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45939686/