Programming Language/C++ Programming
[C++프로그래밍 Chapter10]
JackYoon
2020. 1. 31. 13:46
반응형
[연산자 오버로딩 이해]
Sample operator+(const Sample & ref){ }
operator 키워드와 연산자를 묶어서 함수의 이름을 정의하면
함수의 이름을 통하거나 연산자를 통하여 함수를 호출 할 수 있게 한다.
연산을 할때, 피연산자가 객체일 경우, 클래스 안에 정의된 연산자 재정의를 통하여 함수를 불러온다.
이러한 연산자 재정의 함수는 const로 선언하지 않는다.
연산자 오버로딩
- 멤버 함수에 의한 연산자 오버로딩 - 객체.operator+(객체)
- 전역 함수에 의한 연산자 오버로딩 - operator+(객체, 객체)
연산자 오버로딩 주의사항
- 의도를 벗어난 연산자 오버로딩은 좋지 않다.
- 연산자의 우선순위와 결합성은 바뀌지 않는다
- 매개변수의 디폴트 값 설정 불가하다
- 순수 기능은 보존한다.
[단항 연산자 오버로딩]
단항 연산자에 증가, 감소 연산자가 있다.
이들 또한 연산자오버로딩이 가능하다.
단항이기 때문에 객체 자신에 대한 연산을 수행한다. 따라서 반환형으로
*this를 사용하여 반환할 수 있다.
[교환 법칙 문제 해결]
교환 법칙은 전역함수에 의해 만들어 질 수 있다.
cout, cin, endl에 사용되는 << >>연산자 또한 연산자 재정의를 통하여 구현되어 있다.
cout은 outstream 클래스 객체이다.
cin는 istream클래스 객체이다.
반응형