我似乎无法理解编译器的优先级如何去哪个函数。 这里是一个例子代码:C++继承选择函数的优先级
#include <iostream>
using namespace std;
class A{
public:
int f() {return 1;}
virtual int g() {return 2;}
};
class B: public A {
public:
int f() {return 3;}
virtual int g() {return 4;}
};
class C: public A{
public:
virtual int g() {return 5;}
};
int main() {
A *pa;
B b;
C c;
pa = &b;
cout<< pa -> f()<<endl<<pa -> g() << endl;
pa = &c;
cout<< pa -> f() << endl; cout<< pa -> g() << endl;
return 0;
}
哪个函数(G()和f())将每个时间称为为什么?
运行该程序找出并返回这里,如果你不能找出*为什么*代码的行为就像它一样。但首先,尝试使用关于虚拟调度的知识来解释自己。 – user2079303
我跑了它,问题是为什么... – user107761
如果你跑了它,那么你一定知道哪个函数被调用,你不是吗?你确实问过。 – user2079303