각각 순수 가상 메소드는 직접 파생 클래스에서만 구현되어야합니다. 이유는 무엇입니까?
class A
{
virtual void print() = 0;
};
class B : public A
{
void print();
};
//print() must be implemented
void B::print()
{
std::cout << "Hello" << std::endl;
}
class C : public B
{
//print() does not require to be implemented
};
가 나는 그것의 바로 위 부모
B
의
C
의 관점에서, 인쇄()가 순수 가상 아니라는 것을 이해하는 추상 클래스
A
과 두 개의 클래스
B
&
C
A
에서 파생
B
존재한다고 가정 메서드가 있지만
C
님의 조부모 인
A
의 관점에서 print()는 순수한 가상 메서드입니다. 따라서
C
에도 구현해야합니까?
왜'C'는'B'가 모든 좋은 점을 제공하는지 신경 써야합니까? 순수 가상 함수는 파생 클래스에서 구현할 필요가 없습니다. 그들은 파생 클래스가 순수 가상 함수를 가지지 않도록 구현되어야하며, 따라서 인스턴스화 할 수 없습니다. – Deduplicator
C는 B에서 구현을 상속하므로 제공 할 필요가 없습니다. 그러나 B는 순수 가상이기 때문에 A에서 하나를 얻지 못합니다. – Borgleader
나는이 두 가지 "관점"이 의미하는 바를 모른다. 이 함수는 비 순 위 오버라이드를 가지고 있으므로 모두 좋다. 존재하는 한 오버라이드가 계층 구조에있는 정확한 위치는 중요하지 않습니다. –