C++에서 구조체와 클래스는 데이터 멤버와 멤버 함수를 포함할 수 있는 사용자 정의 데이터 유형을 만드는 데 사용됩니다. 이들 사이에 두드러진 차이점은 기본적으로 접근 제어 지시자의 존재입니다. 이 기사에서는 구조체와 클래스의 접근 제어 지시자에 대해 설명하겠습니다.
구조체(Struct)의 접근 제어
C++에서 구조체의 멤버들은 기본적으로 public으로 선언됩니다. 이는 구조체 내부의 모든 멤버가 구조체 외부에서 직접 액세스할 수 있다는 것을 의미합니다.
아래는 구조체의 간단한 예제입니다:
struct Point {
public:
int x;
int y;
void setCoordinates(int xVal, int yVal) {
x = xVal;
y = yVal;
}
};
위의 예제에서 x
, y
, setCoordinates
모두 public으로 선언되어 있으므로 외부에서 직접 액세스할 수 있습니다.
클래스(Class)의 접근 제어
반면에, C++에서 클래스의 멤버들은 기본적으로 private으로 선언됩니다. 이는 클래스 내부의 멤버에는 클래스 외부에서 직접 액세스할 수 없다는 것을 의미합니다.
아래는 클래스의 간단한 예제입니다:
class Circle {
private:
double radius;
public:
void setRadius(double r) {
radius = r;
}
double getArea() {
return 3.14 * radius * radius;
}
};
위의 예제에서 radius
는 private으로, setRadius
와 getArea
는 public으로 선언되어 있으므로 클래스 외부에서 직접적인 radius
멤버에 액세스할 수 없지만, setRadius
와 getArea
를 통해 간접적으로 radius
에 액세스할 수 있습니다.
구조체와 클래스의 접근 제어 지시자 변경
구조체와 클래스의 접근 제어 지시자는 각각 public
, private
, protected
로 지시자를 변경할 수 있습니다. 이는 멤버 변수 및 함수의 캡슐화와 데이터 은닉을 제어하는 데 사용됩니다.
struct ExampleStruct {
public:
int publicMember;
private:
int privateMember;
protected:
int protectedMember;
};
class ExampleClass {
public:
int publicMember;
private:
int privateMember;
protected:
int protectedMember;
};
결론
구조체와 클래스는 프로그램에서 데이터를 캡슐화하고, 멤버 함수를 통해 해당 데이터에 접근하거나 조작하는 데 사용됩니다. 이 때, 접근 제어 지시자를 적절히 사용함으로써 데이터의 캡슐화와 보호가 강화됩니다.
이상으로 C++의 구조체와 클래스의 접근 제어 지시자에 대한 기본적인 내용을 살펴보았습니다.