반응형

대학교때, 시험문제에 "오버로드와 오버라이드의 차이점을 기술하라"는 문제가 나왔던것이 아직도 기억난다.
한줄의 답도 적지 못했던 기억도
...

워낙 공부를 등한시한 터라, 오버로드라고는 스타크래프트의 저그 밥통(?) 외에는 떠오르는게  없었다
.

경력 6년 차인 지금이라면 답을 적을 수 있을까
?
.. 확신이 안선다
.

두가지가 의미하는 정의는 알고 있지만, 단어와 정의가 항상 매치가 안된다
.

해서. 이 글을 쓰며 머리속에 각인시키려 한다.

·        오버로드(Overload)
함수(메소드) 이름은 같고 인자 갯수나 타입이 다른 함수를 정의하는 것을 의미한다.
(
리턴값만을 달리하는 오버로드는 작성 할 수 없다)

int OverloadFuncAdd( int x, int y );
double OverlaodFuncAdd( double x, double y);

OverloadFuncAdd() 함수가 오버로드된 것이다

·        오버라이드(Override)
상위 클래스의 매소드를 재정의 하는 것이다.
메소드 이름은 물론 인자 갯수나 타입도 동일해야 하며, 주로 상위 클래스의 동작을 상속받은 하위클래스에서 메소드의 동작을 변경하기 위해 사용된다.

class BaseClass
{
protected:
    virtual int OverrideFuncAdd( int x, int
y);
};

class SubClass : public
BaseClass
{
    int OverrideFuncAdd( int x, int
y);
}

와 같은 형태로 사용된다



명확하게 기억하자.

 

반응형

+ Recent posts