[c++] 구조체와 클래스의 복사 생성자

구조체와 클래스는 C++ 프로그래밍에서 데이터와 해당 데이터를 처리하는 함수를 함께 묶는 데 사용됩니다. 구조체와 클래스 모두 복사 생성자를 가질 수 있으며, 이를 통해 객체가 다른 객체로부터 복사될 때 어떻게 동작해야 하는지를 정의할 수 있습니다.

구조체의 복사 생성자

구조체는 C++에서 사용되는 사용자 정의 데이터 형식으로, 복사 생성자를 사용하면 해당 구조체의 객체가 다른 객체로 복사될 때 어떻게 동작해야 하는지를 정의할 수 있습니다. 구조체의 복사 생성자는 기본적으로 멤버변수들을 하나씩 복사하여 새로운 객체를 생성합니다.

다음은 간단한 구조체의 복사 생성자의 예시입니다:

struct Point {
    int x;
    int y;

    Point(const Point &other) {
        x = other.x;
        y = other.y;
    }
};

위의 예시에서 Point 구조체의 복사 생성자는 다른 Point 객체로부터 멤버변수 xy를 복사하여 새로운 객체를 만들고 있습니다.

클래스의 복사 생성자

클래스는 구조체와 비슷하게 동작하지만, 클래스는 기본적으로 private로 멤버들이 지정된다는 차이점이 있습니다. 클래스의 복사 생성자는 클래스의 객체가 다른 객체로 복사될 때 private 멤버에 접근하여 복사를 수행할 수 있도록 합니다.

다음은 간단한 클래스의 복사 생성자의 예시입니다:

class Rectangle {
private:
    int width;
    int height;

public:
    Rectangle(const Rectangle &other) {
        width = other.width;
        height = other.height;
    }
};

위의 예시에서 Rectangle 클래스의 복사 생성자는 private으로 지정된 멤버변수 widthheight에 접근하여 새로운 객체를 만들고 있습니다.

결론

구조체와 클래스는 복사 생성자를 사용하여 객체가 다른 객체로 복사될 때 어떻게 동작해야 하는지를 정의할 수 있습니다. 이로써 데이터의 안전한 복사와 적절한 초기화가 보장됩니다.

참고문헌: