연산자 오버라이딩
2022. 4. 3. 13:01ㆍC++
다음은 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 |