본문 바로가기

C++

C++ 연산자 오버로딩 주의사항

연산자 오버 로딩은 프로그래밍이 지원하는 연산자의 기능 말고도 사용자가 원하는 기능을 만들 수 있는 좋은 기능이나
사용할 대 주의사항이 존재한다.

 

본래의 의도를 벗어난 형태의 연산자 오버 로딩은 좋지 않다.
연산자 오버 로딩은 잘못 사용하면 프로그램을 복잡하고, 이해하기 어렵게 만든다.
10+20은 30이다.
pos1+pos2의 값은?
보통의 사용자라면 pos1과 pos2의 값을 더한 뒤 반환하는 기능이라고 생각할 것이다.
하지만 우리의 기대를 저버리고 pos1의 값을 pos2의 값만큼 증가시킨다든지 아니면 pos1을 pos2의 대입해 버린다든지
전혀 생각하지 못한 결과가 나올 수 있다. 때문에 연산자를 오버 로딩 할 때에는 연산자의 본래 의도를 가급적 충실히
반영해서 연산자의 오버 로딩으로 인해서 발생하는 혼란을 최소해야 한다.

 

연산자의 우선순위와 결합성은 바뀌지 않는다.

연산자가 갖는 연산의 기능은 오버로딩 되어도, 연산자가 지니는 우선순위와 결합성은 그대로 따르게 되어있다.

 

매개변수의 디폴트 값 설정이 불가능하다.

피연산자의 자료형에 따라서 연산자를 오버로딩 한 함수의 호출이 결정되는데 매개변수의 디폴트 값을 설정한다는 것은

말도 안되는 일이다. 연산자 오버로딩의 특성상 매개변수의 디폴트 값이 설정되면, 함수의 호출관계가 매우 불분명해진다.

 

연산자의 순수 기능까지 빼앗을 수는 없다.

int operator+(const int num1, const int num2)

{

     return num1* num2;

}

연산자의 기본 기능을 변견하는 형태의 연산자 오버로딩은 허용되지 않는다.

'C++' 카테고리의 다른 글

C++ 매크로,매크로 함수  (0) 2020.09.07
C++ 함수포인터  (0) 2020.09.07
C++ 연산자 오버로딩(Operator Overloading)  (0) 2020.09.06
C 파일입출력  (0) 2020.09.04
C++ malloc,callco,new  (0) 2020.09.01