0
내가 추상 클래스가있는 경우,이 필드 std::string name;
을 가지고 있으며,이 자식 클래스에서 재정의와 operator<<
에 호출 될 virtual void print(std::ostream&) const noexcept = 0;
순수 가상 메소드를 가지고,의는 "척추"를 부르 자 .연산자 <<, C++ 추상 클래스에서
다형성이 작동하는 방식과 상속 된 클래스에서 operator<<
을 구현하는 방법을 얻습니다.
내가하지 않습니다 무엇 :
이해가 안되네 : 가상 인쇄 기능을 사용하는 추상 클래스의 operator<<
를 구현하는 방법. 왜이 코드가 작동하지 않습니까? 내 추상 클래스는 operator<<
이어야합니다.
virtual void print(std::ostream&) const noexcept = 0;
std::ostream & operator<<(std::ostream & str, Member &obj)
{
return obj.print(str);
}
이것은 추상 클래스 코드입니다.
'<<'연산자. 당신은 계속 "내 클래스는 연산자가있다"라고 말하거나 "어떤 클래스에서 연산자"를 구현한다. - 정확히 무엇을 의미 하는가? 어쨌든, 하나의 비 멤버 함수'std :: ostream & operator << (std :: ostream & str, Vertebrate & obj) {obj.print (str); return str; }''Vertebrate'에서 파생 된 모든 클래스에서 작동해야합니다. 각 클래스마다 별도의 클래스가 필요하지 않습니다. –