[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로 설정되어있으며, 멤버 함수를 통해 간접적으로 접근할 수 있습니다.
결론
구조체와 클래스는 모두 데이터와 함수를 묶는 데 사용되지만, 클래스는 보다 강력한 캡슐화를 제공합니다. 캡슐화를 통해 데이터를 보호하고, 의도치 않은 변경을 방지하며, 인터페이스를 정의함으로써 안정성과 유지보수성을 향상시킬 수 있습니다.