[c++] 구조체와 클래스의 캡슐화

C++에서 구조체와 클래스는 모두 데이터와 함수를 묶는 데 사용됩니다. 구조체는 C 언어의 구조체와 유사하며, 클래스는 데이터와 함수를 묶는 캡슐화를 지원합니다.

구조체의 캡슐화

구조체는 주로 데이터 그룹을 정의하는 데 사용됩니다. 즉, 멤버 변수만 포함하며 일반적으로 접근 제어에 관여하지 않습니다. 예를 들어:

struct Point {
    int x;
    int y;
};

구조체는 기본적으로 모든 멤버 변수가 public이므로 적절한 접근 제어 제어가 없는 한 데이터가 노출될 수 있습니다.

클래스의 캡슐화

클래스는 데이터와 해당 데이터를 조작하는 함수를 함께 묶을 수 있습니다. 즉, 데이터를 보호하고, 유효성을 검사하며, 데이터와 함수를 논리적으로 그룹화합니다. 예를 들어:

class Rectangle {
private:
    int width;
    int height;
public:
    void setWidth(int w) {
        if (w > 0) {
            width = w;
        }
    }
    
    int getWidth() {
        return width;
    }
};

클래스의 멤버 변수는 일반적으로 private로 설정되어있으며, 멤버 함수를 통해 간접적으로 접근할 수 있습니다.

결론

구조체와 클래스는 모두 데이터와 함수를 묶는 데 사용되지만, 클래스는 보다 강력한 캡슐화를 제공합니다. 캡슐화를 통해 데이터를 보호하고, 의도치 않은 변경을 방지하며, 인터페이스를 정의함으로써 안정성과 유지보수성을 향상시킬 수 있습니다.