상속 2

C++ 클래스 상속, 다중 상속, 가상 함수 그리고 다형성(Inheritance & virtual function & polymorphism)

C++ 클래스와 상속 그리고 큰 특징 중 한가지인 다형성에 대해 알아볼 것이다. 그전에 상속과 관계 없지만 조금 신기한 것을 알게 됐는데, 아래처럼 클래스를 정의해놓고 아무런 멤버 변수를 선언하지 않고 size를 확인하면 신기하게도 1이 나온다. class CTest1 { }; struct CTest2 { }; int main() { CTest1 test1; CTest2 test2; std::cout

공부/C || C++ 2022.09.25

C++ 오버라이딩시 반환 타입을 자식 클래스 타입으로 하면 반환 타입이 다르게 오버라이딩 된다

일반적으로 부모클래스에 정의된 멤버 함수를 자식 클래스에서 재정의하는 것을 오버라이딩(overriding)이라고 하는데, 이 오버라이딩은 함수 이름, 매개 변수, 반환 타입까지 같아야 한다고 알고 있을 것이다. 하지만 아래 경우처럼 부모 클래스에서 정의한 함수를 자식 클래스에서 오버라이딩할 때, 그 오버라이딩 하려는 함수의 타입을 자식 클래스 타입으로 하면 오버라이딩 함수의 타입을 다르게 해도 오버라이딩이 가능하다(근본적으로는 타입이 다르다라고 할 순 없다. 이 경우 covariant한 타입이라고 표현을 하더라) class CParent { public: CParent(); virtual ~CParent(); CParent(const CParent& Parent); virtual CParent* Clon..

공부/C || C++ 2021.08.21