
복사 연산자는 다음과 같은 종류가 있습니다.
- 복사 연산자(=): 객체를 복사하여 할당합니다.
- 복사 생성자: 객체를 복사하여 새로운 객체를 생성합니다.
- 복사 할당 연산자(대입 연산자): 객체를 복사하여 할당합니다.
복사 연산자와 할당 연산자는 다음과 같은 차이가 있습니다.
- 할당 연산자(대입 연산자)는 오른쪽 operand를 왼쪽 operand에 할당합니다.
- 복사 연산자는 오른쪽 operand를 복사하여 왼쪽 operand에 할당합니다.
복사 연산자가 실제로 어떤 과정을 거치는지 살펴보겠습니다.
- 복사 연산자는 오른쪽 operand를 복사하여 왼쪽 operand에 할당합니다.
- 복사 연산자는 객체의 멤버 변수를 하나씩 복사하여 할당합니다.
- 복사 연산자는 객체의 멤버 변수가 포인터일 경우, 복사 연산자는 포인터를 복사하여 할당합니다. 이 경우, 복사 연산자는 객체의 멤버 변수가 포인터인 경우, 복사 연산자는 포인터를 복사하여 할당합니다.
예를 들어, 다음과 같이 복사 연산자가 작동하는지 살펴보겠습니다.
#hostingforum.kr
cpp
class Point {
public:
int x, y;
Point(int x, int y) : x(x), y(y) {}
};
int main() {
Point p1(1, 2);
Point p2 = p1; // 복사 연산자
p2.x = 10;
p2.y = 20;
std::cout << "p1.x: " << p1.x << ", p1.y: " << p1.y << std::endl;
std::cout << "p2.x: " << p2.x << ", p2.y: " << p2.y << std::endl;
return 0;
}
이 예제에서, `p2`는 `p1`의 복사본입니다. `p2.x`와 `p2.y`를 변경하면, `p1.x`와 `p1.y`도 변경됩니다.
2025-07-03 13:19