[c++] 구조체와 클래스의 접근 제어 지시자

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으로, setRadiusgetArea는 public으로 선언되어 있으므로 클래스 외부에서 직접적인 radius 멤버에 액세스할 수 없지만, setRadiusgetArea를 통해 간접적으로 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++의 구조체와 클래스의 접근 제어 지시자에 대한 기본적인 내용을 살펴보았습니다.