반응형
연산자 오버로딩이란?
기존의 연산자를 재정의하는 것
연산자 오버로딩을 통해 =의 기능을 재정의 해주면,
연산자를 사용할 수 없는 객체가 기본 자료형 변수처럼 덧셈, 뺄셈, 혹은 곱셈과 같은 연산들을 할 수 있음.
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
따로 선언하지 않을 경우 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
'개발 언어 > cpp' 카테고리의 다른 글
cpp 증감 연산자 오버로딩 (전위 연산자, 후위 연산자) (0) | 2021.12.30 |
---|---|
CPP 클래스 상속(Inheritance) (0) | 2021.12.22 |
cpp 오버로딩(Overloading) (0) | 2021.12.21 |
cpp 복사생성자 (copy constructor) (0) | 2021.12.21 |
cpp 얕은 복사와 깊은 복사 (0) | 2021.12.21 |
댓글