我似乎無法理解編譯器的優先級如何去哪個函數。 這裏是一個例子代碼: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