728x90
1. 연산자 오버로딩(operator overloading)
함수 오버로딩과 마찬가지로 연산자 오버로딩을 지원합니다.
함수오버로딩은 같은 일을 처리하는 함수를 매개변수의 형식을 조금씩 달리하여, 하나의 이름으로 작성할 수 있게 해주는 것입니다.
연산자 오버로딩을 사용자 정의 타입(클래스 포함)까지 확장할 수 있습니다.
코드 구현은 \4. Class에서 소개 합니다.
연산자 함수의 정의방법
-
클래스의 멤버 함수로 정의
private 멤버에 대한 접근 가능
-
전역 함수로 정의
private 멤버에 대한 접근 위해 friend 함수사용
Position Position::operator-(const Position& other){
return Position((x_ + other.x_)/2, (y_ + other.y_)/2);
}
2. 오버로딩 제약 사항
1. 전혀 새로운 연산자를 정의할 수 없습니다.
2. 기본 타입을 다루는 연산자의 의미는 재정의 할 수 없습니다. 따라서 오버로딩된 피연산자 중 하나는 반드시 사용자 정의 타입이어야 합니다.
3. 오버로딩된 연산자는 기본 타입을 다루는 경우에 적용되는 피연산자의 수, 우선순위 및 그룹화를 준수해야 합니다.
나눗셈 연산자(/)는 이항연산자로이므로, 단항 연산자로 오버로딩 할 수 없습니다.
4. 오버로딩된 연산자는 디폴트 인수를 사용할 수 없습니다.
오버로딩 불가능 연산자(공백기준 다른연산자)
:: . .* ? : sizeof typeid const_cast dynamic_cast reinterpret_cast static_cast
멤버함수로만 오버로딩할 수 있는 연산자.
= () [] ->
[출처 - TOPSCHOOL.com http://tcpschool.com/cpp]
728x90
'lang > C,C++' 카테고리의 다른 글
[Class와 OOP] 5. OOP 상속성, (overloading vs overriding) (962) | 2019.10.09 |
---|---|
[Class와 OOP] 4. OOP 캡슐화, 프렌드(freind), static, const 멤버 변수, 함수 (1013) | 2019.10.09 |
[Class] 2. Class - 구성요소, 깊은복사 vs 얕은복사 (1818) | 2019.10.09 |
[Class] 1. Class - 객체지향 프로그래밍 OOP 4가지 특징 (1313) | 2019.10.09 |
[STL] erase (0) | 2019.09.19 |
댓글