연산자 오버라이딩

2022. 4. 3. 13:01C++

다음은 Base 클래스와 그를 상속받은 Derived 클래스다. 

class Base
{
public:
	void ShowFunc()
    {
    	cout<<"hello"<<endl;
    }
};

class Derived: public Base
{
public:
	void ShowDerivedFunc()
    {
    	ShowFunc();
        cout<<"world"<<endl;
    }	
};

 

 

ShowFunc()라는 함수를 재정의 할 수 없을까?

이를 오버라이딩이라고 하는데

C++에서는 가상함수를 통해 이 오버라이딩을 구현할 수 있다. 

 

 

Override(오버라이드)

> 상위 클래스의 메서드를 재정의 하는 것이다. virtual 함수를 사용한다. 

 

다음과 같이 오버라이딩을 구현 가능하다.  

virtual 함수는 부모 클래스에서 오버라이딩이 기대되는 함수에 사용하면된다. 

 
#include <iostream>
#include <string>

using namespace std;

class Base
{
public:
	virtual void ShowFunc()
    {
    	cout<<"hello"<<endl;
    }
};

class Derived: public Base
{
public:
	void ShowFunc()
    {
        cout<<"hello world"<<endl;
    }	
};

int main(void)
{
    Base b1;
    b1.ShowFunc();	//hello 출력
    Derived d1;
    d1.ShowFunc();	//hello world 출력

    return 0;
}

'C++' 카테고리의 다른 글

상수  (0) 2022.04.09
동적 할당  (0) 2022.04.03
Inheritance  (0) 2022.04.03
Member Initializer  (0) 2022.04.03
new와 delete  (0) 2022.04.03