C++이나 Java 같은 객체지향 언어를 하면서 혼동 되는 개념 중 하나가 오버로딩과 오버라이딩입니다.
오버로딩은 메소드의 이름은 같지만 매소드 변수 타입이 다른 형태로 새로운 매소드를 추가하는 것을 의미합니다.
반면 오버라이딩은 상속 받은 메소드의 내용을 변경하는 것입니다. 매소드 변수 타입이 이 경우 같습니다.
class C{
public :
virtual int a(int);
void b(C*);
}
이라는 기반 클랙스가 있을 때
class D : public C
{
public :
int a(int);
int b(C*);
}
라고 정의를 하면 a라는 매소드는 이 클래스에서 상속을 받아서 재정의를 하였는데, 매소드의 이름과 매소드 변수가 모두 같습니다. 이 경우를 오버라이딩이라고 합니다.
반면 b라는 매소드는 반환하는 변수 타입이 void에서 int로 변했습니다. 이경우 매소드의 이름은 같지만 완전히 새로운 매소드가 된 것입니다. 이 경우를 오버로딩이라고 합니다.
새로운 클래스를 만들어서 연산자 오버로딩을 하는데, 정수 + 정수는 이미 정의가 되어 있지만, class A + class A는 정의 되어 있지 않았으므로 매소드 이름만 같은 새로운 매소드를 만들어 내는 것을 의미합니다.
'backup' 카테고리의 다른 글
[심심풀이 FX마진거래]8월 3일 FX마진거래의 최대 이벤트 넌팜 (0) | 2013.08.03 |
---|---|
[자기계발]NLP 자기계발을 위한 최고의 방법 (3) | 2013.07.30 |
7월 30일 파운드 달러 변곡점 매매 이제 변곡 진짜 시작? (0) | 2013.07.30 |
그레고리안 밴드를 아시나요? 대중음악을 그레고리안 성가풍으로 (0) | 2013.07.30 |
C++ 멀티쓰레드 프로그래밍 (0) | 2013.07.29 |