상속받은 함수를 오버라이딩하기
상속을 사용하는 일반적인 경우엔
상속을 해주는 부모클래스와 상속을 받는 자식클래스는
보통 기능차이가 많지않을 수 있다.
이때 함수오버라이딩을 유용하게 사용할수 있다.
함수 오버라이딩할때 부모클래스의 함수를 사용하고 싶다면 부모클래스이름은 선언한다.
Base::Print();
다형성에서 사용된다.
<< operator 를 사용하고 싶으면 static_cast해서 사용한다.
out << static_cast<Base>(b) << endl;
#include <iostream>
using namespace std;
class Base {
protected:
int m_i;
public:
Base(int a)
: m_i(a)
{
}
void Print() {
cout << "I'm Base" << endl;
}
friend std::ostream & operator << (std::ostream & out, const Base &b) {
out << "Base opertator";
return out;
}
};
class Derived : public Base {
public:
double m_d;
Derived(int a)
:Base(a) {
}
void Print() {
Base::Print();
cout << "I'm Derived" << endl;
}
friend std::ostream & operator << (std::ostream & out, const Derived &b) {
out << static_cast<Base>(b) << endl;
out << "Derived opertator";
return out;
}
};
int main()
{
Base b(5);
Derived d(2);
b.Print();
d.Print();
cout << b << endl;
cout << d << endl;
return 0;
}
'개발 소발 > 개발 C++(기초)' 카테고리의 다른 글
c++ 가상함수와 다형성 (0) | 2019.09.23 |
---|---|
c++ 다형성의 기본개념 (0) | 2019.09.23 |
c++ 상속과 접근지정자 (0) | 2019.08.30 |
c++ 상속 유도된 클래스들의 생성과 초기화 (0) | 2019.08.30 |
c++ 상속 유도된 클래스들의 생성순서 (0) | 2019.08.30 |