아래 코드의 결과가 "클래스 B :: 1"이되는 이유를 설명 할 수 있습니까?코드는 파생 클래스 메서드를 실행하지만 기본 클래스 메서드에서 기본 매개 변수를 가져옵니다
파생 클래스의 가상 메소드가 기본 클래스의 기본 매개 변수를 사용하고 자체 클래스의 기본 매개 변수를 사용하는 이유는 무엇입니까? 제게 이것은 꽤 이상합니다. 미리 감사드립니다!
코드 : 기본 값이 컴파일시 대체하고 실제 함수가 (A : FUNC 또는 B : FUNC)를 호출 할 때 런타임에 결정, 선언에서 가져
#include <iostream>
using namespace std;
class A
{
public:
virtual void func(int a = 1)
{
cout << "class A::" << a;
}
};
class B : public A
{
public:
virtual void func(int a = 2)
{
cout << "class B::" << a;
}
};
int main()
{
A * a = new B;
a->func();
return 0;
}
빠른 답변 주셔서 감사합니다. – Aremyst