오버로드? 오버라이딩?

2014. 11. 6. 22:28Basic/etc

반응형

오버로드 (overload)
비슷한 일을 하는 함수를 같은 함수이름으로 인자의 갯수를 다르게 하거나, 타입을 다르게 함으로서 구현하는 방법.
단, 리턴형은 같아도 달라도 무관하다.  오버로딩된 메소드들은 서로 무관한 함수 취급한다.

오버로딩된 경우 적합한 메소드를 찾아서 실행하는 순서

1. 메소드의 이름
2. 메소드의 인자의 개수
3. 각 인자들의 데이터 형 (data type)

 

1 class CParent
2 {
3 public :
4     void func(int); //오버로딩
5     void func(float, int); //오버로딩
6     void func(int, int); //오버로딩
7 };

 
오버라이드(override)
 하위 클래스에서 상위 클래스의 함수의 동작을 변경하기 위해 상위 클래스의 함수를 재정의 하는것.
오버로드는 특성상 한 클래스에서 몇번이고 중복 정의 할수 있지만, 오버라이드는 한 하위 클래스에서 '한번만' 정의 할 수 있다.
리턴값, 함수 이름, 인자 갯수, 인자 타입이 완벽하게 일치 해야 한다.
인자는 같고 리턴 타입만 다른 경우는 overload || override 이 아니며, 컴파일 오류를 발생시킨다.

01 class CParent
02 {
03 public :
04     void func(int);
05 };
06  
07 class CChild : public CParent
08 {
09 public :
10     void func(int); // 오버 라이드
11 };
반응형

'Basic > etc' 카테고리의 다른 글

추상클래스와 인터페이스  (0) 2014.11.09
접근제어자와 캡슐화  (0) 2014.11.09
객체지향? 추상화?  (0) 2014.11.09
다형성  (0) 2014.11.09
포함? 상속?  (0) 2014.11.09