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
반응형
'프로그래밍 > C++' 카테고리의 다른 글
[C++] 연산자 재정의 (operator overloading) (0) | 2019.12.14 |
---|---|
[C++] 다중 상속 (multiple inheritance) (0) | 2019.12.03 |
[C++] RTTI (Run Time Type Information) (0) | 2019.12.02 |
[C++] 인터페이스 (interface) (0) | 2019.12.01 |
[C++] 추상 클래스 (abstract class) (0) | 2019.11.30 |