약간의 다형성을 알고 있지만 여기서 암시 적 변환 인 경우 B
에서 A
으로 암시 적 변환 할 때 B
에서 메서드가 호출되지만 명시 적 메서드는 A
메서드가 가상 인 경우에만이 방법으로 작동하며, 그렇지 않은 경우 ShowA
이 입력됩니다 (클래스 A
의 메서드가 호출 됨). A& extra = extra
이 금지 또는 단순히 금지 무의미한 것들에 약간의 중요성이 있기 때문에하지 않는 이유는 또한명시 적 변환과 가상 함수를 사용한 참조를 사용하는 암시 적
class A
{
public:
A(){};
~A(){}
public:
int n;
virtual void Show(){ cout << "ShowA" << endl; };
};
class B : public A
{
public:
B(){};
~B(){}
virtual void Show() { cout << "ShowB" << endl; }
};
int _tmain(int argc, _TCHAR* argv[])
{
B b;
A& a = b; //ShowB
A& a = (A)b; //ShowA
a.Show();
//Extra:
A& extra = extra;
return 0;
}
가?
는
그래서 ... 질문은 무엇입니까? – Yaniv