#include <iostream>
struct A {
int one() {
std::cout << "oneA" << std::endl;
}
int devone() {
one();
}
};
struct B : A {
int one() {
std::cout << "oneB" << std::endl;
}
};
int main() {
B b;
b.devone();
}
인쇄 oneA
나는 이유를 이해하지 않습니다. 가상 기능을 사용하는 경우 oneB이 인쇄되지만 위의 코드 예제에서는 그렇지 않은 이유를 알고 있습니다. 포인터 또는 참조가 사용되지 않습니다. 왜 함수 가상을 선언해야합니까?
실제로 포인터가 있습니다. 그것은 단지 당신에게서 숨겨져 있습니다. 모든 멤버 함수에는'this' 포인터가 있음을 기억하십시오. – NathanOliver
'A :: devone' 내부의'this'의 타입은'A *'이므로'A :: one'이 호출됩니다. – nwp