연산자오버로딩

42_Cursus·2022년 5월 31일
0

CPP

목록 보기
9/10

연산자 오버로딩

기존의 제공하고있는 연산자를 재정의하여 사용자 정의 클래스로 사용하는것을 말한다.
대부분의 기본 제공 연산자 함수는 전역함수 또는 클래스로 재정의가 가능하다.
오버로드 된 연산자는 함수로 구현된다.

연산자 오버로드에 관한 규칙

  • ** 과 같은 새로운 연산자를 정의할수없다.
  • 기본 제공 데이터 형식에 적용할때, 연산자의 의미를 다시 정의할수없다.
  • 오버로드 된 연산자는 비정적(non-static) 클래스 멤버함수거나, 전역함수이어야한다.
  • 함수의 이름은 operator를 사용함으로써 컴파일러에게 연산자오버로드 함수인것을 명시한다.

오버로딩 불가능한 연산자

  • '.' : 멤버선택
  • '*' : 멤버 포인터 선택
  • '::' : 범위
  • '?:' : 조건
  • '#' : 문자열 전처리기 변환
  • '##' : 전처리기 연결

예)


#include <iostream>

class Test
{
	private:
    	int _num;
        int _div;
    
    public:
    	Test(): _num(0), _div(0) {}
        Test(int num, int div): _num(num), _div(div) {}
        
        operator int() const
        {
        	return _num / _div;
        }
        
};

int main(void)
{
	Test t(10, 2);
    
    int ret;
   	ret = t;
    std::cout << ret << std::endl;
    return (0);
}

// random_access_iterator

operator random_access_iterator<value_type const>() const 
{ 
	return random_access_iterator<value_type const(_ptr); 
}
profile
etudiant_42

0개의 댓글