기본 클래스의 다른 메서드에서 사용하는 기본 클래스의 메서드를 재정의하려고합니다. 그러나 파생 클래스가 기본 클래스의 using 메서드를 호출하면 파생 된 used 메서드가 실행되지 않고 대신 기본 클래스의 used 메서드가 호출됩니다.C++ 기본 클래스가 자식 클래스의 재정의 된 메서드를 사용하도록 설정합니다.
#include <iostream>
using namespace std;
class Base {
public:
Base() {}
virtual ~Base() {}
void printLeft() { cout << this->getLeft(); }
int getLeft() { return 0; }
};
class Derived: public Base {
public:
Derived() {}
virtual ~Derived() {}
int getLeft() { return 1; }
};
int main(int argc, char *argv[]) {
Derived d = Derived();
d.printLeft();
}
파생 객체의 방법보다는 하였다 Base
의 getLeft()
방식을 나타내는 main()
0
인쇄를 실행 : 다음의 예이다.
Derived 인스턴스에서 호출 할 때 Derived::getLeft()
이 이되도록이 코드를 어떻게 변경합니까?
class Base {
public:
Base() {}
virtual ~Base() {}
void printLeft() { cout << this->getLeft(); }
virtual int getLeft() { return 0; }
};
C++에서 기본적으로 멤버 함수는 가상 없습니다 :
죄송합니다. 시간이 없습니다. 이 프로젝트는 내일 마감 예정입니다. 그러나 도움을 주신 제안에 감사드립니다. – weberc2
downvoter (들)에 대한 질문에 특히 잘못된 것이 있습니까? 내가 분명히해야할까요? 나는 연구를 시도했지만 설명하려고하는 현상에 대한 용어를 알지 못했기 때문에 어떤 적절한 결과도 찾을 수 없었습니다. – weberc2
나는이 질문을 downvoted,하지만 당신이 C + +를 배우기 위해 책을 읽으 려하지 않는다고 나에게 이야기하기 전까지는 그렇게하지 않았다. –