양도
대입 연산자(=)는 엄밀히 말하면 이진 연산자입니다. 할당 연산자의 선언은 다음을 제외하고 다른 모든 이항 연산자와 동일합니다.
- 비정적 멤버 함수여야 합니다. 연산자=는 nonmember 함수로 선언할 수 없습니다.
- 파생 클래스가 상속하지 않습니다.
- 클래스 형식이 없는 경우 컴파일러에서 기본 연산자= 함수를 생성할 수 있습니다.
다음 예제에서는 할당 연산자를 선언하는 방법을 보여 줍니다.
class Point
{
public:
int _x, _y;
// Right side of copy assignment is the argument.
Point& operator=(const Point&);
};
// Define copy assignment operator.
Point& Point::operator=(const Point& otherPoint)
{
_x = otherPoint._x;
_y = otherPoint._y;
// Assignment operator returns left side of assignment.
return *this;
}
int main()
{
Point pt1, pt2;
pt1 = pt2;
}
제공된 인수는 식의 오른쪽입니다. 연산자는 개체를 반환하여 할당 연산자의 동작을 보존하고, 할당 연산자는 할당이 완료된 후 왼쪽의 값을 반환합니다. 이렇게 하면 다음과 같은 할당을 연결할 수 있습니다.
pt1 = pt2 = pt3;
복사 할당 연산자는 복사 생성자와 혼동해서는 안 됩니다. 후자는 기존 개체에서 새 개체를 만드는 동안 호출됩니다.
// Copy constructor is called--not overloaded copy assignment operator!
Point pt3 = pt1;
// The previous initialization is similar to the following:
Point pt4(pt1); // Copy constructor call.
참고 항목
복사 할당 연산자를 정의하는 클래스가 복사 생성자, 소멸자 및 C++11부터 생성자 이동 및 이동 할당 연산자를 명시적으로 정의해야 한다는 세 가지 규칙을 따르는 것이 좋습니다.
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기