첫번째 포스팅에 이어 바로 연산자 오버로딩 포스팅을 하겠습니다.
C++, JAVA를 한번쯤 공부해 보신분들은 오버로딩이라는 단어를 많이 들어 보셨을거라 생각합니다.
다시 살펴보도록 하겠습니다. 매우 중요한 개념이므로 꼭 숙지하고 넘어가시기 바랍니다.!
오버로딩(중복정의) : 하나의 클래스 내에서 이름이 같은 여러 개의 메서드를 정의한 것.(매개변수가 다름- 매개변수의 수, 배치순서)
오버라이딩(재정의) : 상속관계에 있을 때 부모로 부터 상속받은 기능 즉 메서드가 기능적으로 불필요한 경우에 자식클래스가 다시 정의하는 것
(이름이 같아야함, 매개변수가 같아야함, 리턴타입이 같아야함)
그렇다면 연산자 오버로딩은 무엇일까요?
: C++에서 제공하는 기본 타입이 아닌 클래스 타입, 즉 사용자 정의 타입에도 연산자를 사용할 수 있게 하는 문법.
예제를 통해 익혀보도록 하겠습니다.
기본적으로 컴파일러에 연산이 정의되어 있기 떄문에 가능합니다.
그러나 위에 예시를 보면 p1+p2에 에러가 나는 것을 볼수 있는데요 이는 사용자가 정의한 클래스에 대한 연산을 컴파일러가 알고 있지 않기 때문입니다. 따라서 연산자 오버로딩을 통해 컴파일러 내부에 정의되지 않은 타입의 연산을 가능하게 할 수 있습니다.
자 이제 연산자 오버로딩을 정의하고 사용해 보도록 하겠습니다
위 코드의 출력 결과는 어떻게 될까요?
@
Point 객체의 +연산자를 정의한 함수가 호출 되었습니다.
그렇다면 이제 operator+()의 내부를 정의 해 보겠습니다
두 Point객체 p1과 p2를 더하는 것은 p1의 x와 p2의 x를 더하고 p1의 y와 p2의 y를 더한다는 의미입니다.
@ 
'Programming Language > C++' 카테고리의 다른 글
6. 템플릿 (0) | 2016.06.01 |
---|---|
5.함수 객체 (0) | 2016.06.01 |
4. 함수 포인터 (1) | 2016.06.01 |
3. STL에 필요한 주요 연산자 오버로딩(2) (4) | 2016.06.01 |
1. STL에 들어가기 앞서... (1) | 2016.06.01 |