프로그래밍/C++
[C++] 연산자 재정의 주의 사항
갓똥
2019. 12. 14. 15:00
728x90
반응형
1. 연산자 재정의 문법 주의 사항
int operator+(int a, int b) {
return a - b;
}
// 3 + 2 ?
Point operator+(const Point& p, int n) {
// ...
}
// Point operator+(const Point& p, int n, double d) - error
// Point operator+(const Point& p, int n = 10)
// Point p2 = p1 + ; - error
Point p1;
Point p2 = p1 + 1;
① 인자가 모두 primitive 타입인 경우는 오버로딩 할 수 없다.
=> 만약 위와 같이 코드를 짜고 3+2를 하면 1이 나오게 된다?
② 다음의 연산자는 오버로딩 할 수 없다.
.* :: ?: sizeof typeid
static_cast dynamic_cast reinterpret_cast const_cast
. : C++20부터 오버로딩 가능
③ 멤버 함수로만 오버로딩 가능한 연산자 : =, (), [], ->
④ 새로운 연산자를 만들거나, 인자의 개수를 변경하거나, 연산자 우선순위를 변경할 수 없다.
⑤ 디폴트 파라미터를 사용할 수 없다.
⑥ 연산자 재정의에서 중요한 연산자들
<<, ++, [], (), ->, =
728x90
반응형