본문 바로가기
개발 언어/cpp

cpp 연산자 오버로딩(Operator Overloading)

by eeeun:) 2021. 12. 21.
반응형

연산자 오버로딩이란?

기존의 연산자를 재정의하는 것

 

연산자 오버로딩을 통해 =의 기능을 재정의 해주면,

연산자를 사용할 수 없는 객체가 기본 자료형 변수처럼 덧셈, 뺄셈, 혹은 곱셈과 같은 연산들을 할 수 있음.

Robot robot1("hi");
Robot robot2;

robot1 = robot2;		<= 대입연산자


객체 자체와 직접적인 연관이 있기 때문에 클래스의 멤버 함수로만 정의할 수 있으며 전역 함수, 정적 함수로는 정의 불가.

오버로딩을 통해 객체가 + - * / 와 같은 연산자를 쓸 수 있도록 정의할 수 있음.

 

오버로딩을 잘 모르면 아래 링크 클릭!

https://developer-eun-diary.tistory.com/entry/cpp-%EC%98%A4%EB%B2%84%EB%A1%9C%EB%94%A9Overloading

 

cpp 오버로딩(Overloading)

오버로딩이란? 메서드의 이름은 같지만, 매개변수를 다르게 함으로써 메서드를 여러개 만드는 것 c에서는 오버로딩이 존재하지 않아, 같은 기능을 하는 함수여서 매개변수에 따라 다른 이름으

developer-eun-diary.tistory.com

 

따로 선언하지 않을 경우 default로 얕은 복사를 하는 연산자를 컴파일러가 자동으로 만들기 때문에,

포인터를 가지는 경우 연산자의 정의는 필수!

class Robot {
public:
	char *name;
    
    // 생성자
    Robot(char* _name) {
    	//공간을 새로 할당해서 데이터를 입력
    	name = new char[strlen(_name) + 1];
        strcpy(name, _name);
    }
    // 대입연산자(=) 오버로딩
    Robot& operator=(const Robot& r) {
    	if (this == &r)
        	return *this;
        name = new char[strlen(r.name) + 1];
        strcpy(name, r.name);
    }
}
728x90

댓글