본인 조차 overload와 override가 다름을 처음 C++배우는 입장에서 구별하지 못하고 있었다. 처음에는 단순히 이름만 다르게 부르는줄 알았지만 중요한 개념이였다. 한번 간략이 정리하고 넘어가야겠다.
Overloading
오버로딩은 함수의 이름은 같지만, 파라미터(매게변수)나 type 또는 매게변수의 수가 다른 function을 중복선언하는것을 말한다.
특징:
1) 멤버함수의 이름이 같아야 한다.
2) Parameter(매게변수)의 수가 달라야 한다.
3) Parameter(매게변수)의 수가 같은경우, 데이터 type이 달라야 한다.
4) return type은 함수를 오버로딩할때 영향을 미치지 않는다. 즉 같아도 되고, 달라도 된다.
Overriding
오버라이딩은 부모class의 member function을 상속받는 자식 class에서 부모 class의 member function과 이름이 같은 함수를 재정의 하여, 자식 class 내부에서 override된 함수를 우선시 하여 사용하는 것 이다.
특징:
1) 오버라이드 하고자 하는 member function이 부모class에 존재해야 한다.
2) member function 이름이 같아야한다.
3) member function의 parameter(매게변수)의 수, data type이 같아야한다.
4) return type이 같아야 한다.
5) 상위 member function과 같거나 내용이 추가된다.
6) Covariant return type의 경우 virtual function의 return type이 포인터나 참조형일때, return type 달라도 오버라이드 가능하다.
'CS > C++' 카테고리의 다른 글
C++ 공부 섹션13 템플릿 : 홍정모의 따배씨쁠쁠 (0) | 2022.01.17 |
---|---|
C++ 공부 섹션12 다형성 : 홍정모의 따배씨쁠쁠 (0) | 2022.01.16 |
C++ 공부 섹션11 상속 : 홍정모의 따배씨쁠쁠 (0) | 2022.01.16 |
C++ 공부 섹션10 객체관계 : 홍정모의 따배씨쁠쁠 (0) | 2022.01.16 |
C++ 공부 섹션9 연산자 오버로딩 : 홍정모의 따배씨쁠쁠 (0) | 2022.01.16 |
댓글