컴파일러 우선 순위가 어떻게 작동하는지 이해할 수없는 것 같습니다. 여기 예 코드 : 함수 선택의 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