C++/Class
2021. 3. 20. 17:26
함수 오버라이딩
자식 클래스에서 부모 클래스의 함수명과 같은 함수를 정의할 수 있다.
- 함수 오버로딩과 비슷하다. 호출하는 클래스에 따라 결정된다는 점이 다르다.
예제
함수 오버라이딩
#include <iostream>
class Base
{
public:
void print()
{
std::cout << "I'm Base\n";
}
};
class Derived : private Base
{
public:
void print()
{
Base::print();
std::cout << "I'm Derived\n";
}
};
int main()
{
using namespace std;
Derived().print();
}
/* stdout
I'm Base
I'm Derived
*/
연산자 오버라이딩
연산자 오버로딩도 오버라이딩할 수 있다.
static_cast
를 통해서 부모 클래스로 형변환하면 부모 클래스에서 오버로딩한 연산자도 사용할 수 있다.#include <iostream> class Base { public: friend std::ostream& operator << (std::ostream& out, const Base& b) { out << "This is Base output\n"; return (out); } }; class Derived : private Base { public: friend std::ostream& operator << (std::ostream& out, const Derived& d) { out << static_cast<Base>(d); out << "This is Derived output\n"; return (out); } }; int main() { using namespace std; cout << Derived(); } /* stdout This is Base output This is Derived output */
'C++ > Class' 카테고리의 다른 글
C++ 다중 상속 (0) | 2021.03.20 |
---|---|
C++ 상속받은 멤버의 접근 권한 변경 (0) | 2021.03.20 |
C++ 상속과 접근 지정자 (0) | 2021.03.20 |
C++ 상속과 패딩 (0) | 2021.03.20 |
C++ 유도된 클래스들의 소멸 순서 (0) | 2021.03.19 |