본문 바로가기
프로그래밍/C++

C++ 오버라이딩?? 이건 또 뭘까?

by Hwan2 2019. 3. 4.
728x90
반응형

 

 

 

 

 

C++에서 오버라이딩 이라는 개념이 존재 합니다.

 

오버라이딩은 상속관계에 있을 때 나타나는 기능인데,

 

오버로딩과는 다르게!! 함수의 반환 값, 매개변수, 이름 모두 동일해야 합니다.

 

그럼 도대체 왜 사용하느냐? 이유가 뭐냐?

 

그것은 바로 virtual기능을 사용할 때 진가가 발휘 되는데 이것에 대해선 나중에 설명하도록 하겠습니다.

 

우선 중요한 것은 이걸 정의하는 방법과 활용에 대해 알아 두는 것입니다. 

 

 

 

 

우선 정의 방법은 이렇습니다.

 
#include<iostream>

using namespace std;

class A {
    int num = 10;

public:
    void show_Pt() {
        cout << "class A의 num : " << num << endl;
    }
};

class B : public A{
    int num = 999;

public:
    void show_Pt() {
        cout << "class B의 num : " << num << endl;
    }
};

int main(void) {

    A a;
    B b;

    a.show_Pt();
    b.show_Pt();

    return 0;
}

 

 

컴파일 에러도 없고 오버라이딩이 잘 됐습니다.

 

즉, class A의 자식 클래스인 class B는 class A의 모든 함수와 맴버 변수를 사용할 수 있습니다.(public이나 protected일 경우에만)

 

그러면 왜 사용할까? 그이유는 이렇습니다.

 

 class B에서 class A의 함수가 맘에 안든다면??

 

그럴 경우 자신이 새로 함수를 같은 이름으로 정의하는 것을 가르켜 '오버라이딩' 이라고 부릅니다.

 

그럼 같은 함수를 호출해도 자식 클래스에 있는 B는 자신의 재 정의한 함수를 호출하기 때문입니다.

 

 

 

 

 

반응형

'프로그래밍 > C++' 카테고리의 다른 글

C++, friend 사용법.  (0) 2019.03.11
C++ virtual 함수란?  (0) 2019.03.11
C++ 오버로딩? 그게 뭘까?  (2) 2019.03.04
C++ 복사 생성자, 왜 그렇게 생겼냐?  (4) 2019.02.24
C++ 소멸자란?  (0) 2019.02.22

댓글


스킨편집 -> html 편집에서