죄송합니다. 이는 너무 고생했지만 숙제 문제와 관련이 있습니다. 나는 왜 내가 모든 주석을 제외하고 모든 일이 일어나는 지 이해한다. 누군가 C++이하는 일을 왜하는지 설명해 주시겠습니까?C++ 상속 및 메서드 오버로드 혼란
감사
#include <iostream>
using namespace std;
class X0 {};
class X1: public X0 {};
class X2: public X1 {};
class Y1
{
public:
virtual void f(int v) { cout << "Y1(int)" << endl; }
virtual void f(const X0 *x) { cout << "Y1(X0)" << endl; }
virtual void f(const X1 *x) { cout << "Y1(X1)" << endl; }
};
class Y2: public Y1
{
public:
virtual void f(const X0 *x) { cout << "Y2(X0)" << endl; }
virtual void f(const X1 *x) { cout << "Y2(X1)" << endl; }
virtual void f(const X2 *x) { cout << "Y2(X2)" << endl; }
};
int main(int argc, char * argv[])
{
X2 x2; X2 *X2Pointer = &x2;
Y2 y2; Y1 *Y1Pointer = &y2;
cout << "What is about to happen?" << endl;
//Y1 pointer points to a Y2 object.
//The Y2 class, upon being given an X2 pointer, should print Y2(X2)
Y1Pointer->f(X2Pointer);
cout << "Why did I just print Y2(X1)" << endl;
return 0;
}
C++은 아무 것도하지 않습니다. 그 일을하는 사람 –
이것은 최소한의 예와 거의 반대입니다. 우리는 당신이 이해하는 것을 시연 할 필요가 없습니다. 당신이하지 못하는 것에 대한 예입니다. –