class A {
public:
virtual void func1() {
cout << "A::func1" << endl;
}
int _a;
};
class B {
public:
virtual void func1() {
cout << "B::func1" << endl;
}
int _b;
};
class C : public A, public B {
public:
virtual void func1() {
cout << "C::func1" << endl;
}
int _c;
};
int main() {
C c;
A* pa = &c;
B* pb = &c;
pa->func1();
pb->func1();
return 0;
}
上面的代码中,C同时继承了A和B,即C中包含了A和B,问:C类中的虚函数C::func1在A的虚表中还是在B的虚表中?
class A {
public:
virtual void func(int n = 0) {
cout << "A:" << n << endl;
}
virtual void qwq() {
func();
}
};
class B : public A {
public:
void func(int n = 1) {
cout << "B:" << n << endl;
}
};
int main() {
A* p = new B;
p->qwq();
return 0;
}
问:上面的代码输出结果是什么?
本文探讨了C++中多重继承情况下虚函数表的处理方式,并通过具体示例解释了如何解决二义性问题。此外,还讨论了虚函数覆盖与调用过程中的细节。
357

被折叠的 条评论
为什么被折叠?



