본문 바로가기
lang/C,C++

[Class] 3. Class - 연산자오버로딩

by Wordbe 2019. 10. 9.
728x90

1. 연산자 오버로딩(operator overloading)

함수 오버로딩과 마찬가지로 연산자 오버로딩을 지원합니다.

함수오버로딩은 같은 일을 처리하는 함수를 매개변수의 형식을 조금씩 달리하여, 하나의 이름으로 작성할 수 있게 해주는 것입니다.

연산자 오버로딩을 사용자 정의 타입(클래스 포함)까지 확장할 수 있습니다.

코드 구현은 \4. Class에서 소개 합니다.


연산자 함수의 정의방법

  1. 클래스의 멤버 함수로 정의

    private 멤버에 대한 접근 가능

  2. 전역 함수로 정의

    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

댓글