Computer/C, C++

C++ 언어 강력한 도구인 클래스의 멤버와 접근 제한자

젊은 동네 2023. 7. 15. 16:20
728x90

C++언어 클래스란 무엇인가?

C++언어에서 클래스란 객체지향 프로그래밍의 핵심 개념 중 하나로, 데이터와 기능을 하나의 단위로 묶어서 캡슐화하는 방법입니다. 클래스는 객체를 생성하기 위한 틀이며, 객체는 클래스의 인스턴스라고도 합니다. 클래스를 정의할 때는 클래스의 이름과 멤버 변수, 멤버 함수를 선언합니다.

멤버 변수와 멤버 함수란 무엇인가?

멤버 변수란 클래스가 가지고 있는 속성을 나타내는 변수이며, 멤버 함수란 클래스가 수행할 수 있는 동작을 나타내는 함수입니다. 예를 들어, 사람이라는 클래스를 정의한다면, 이름, 나이, 성별 등이 멤버 변수가 될 수 있고, 걷다, 말하다, 먹다 등이 멤버 함수가 될 수 있습니다.

접근 제한자란 무엇인가?

클래스의 멤버 변수와 멤버 함수에는 접근 제한자라는 것을 붙일 수 있습니다. 접근 제한자란 클래스의 외부에서 해당 멤버에 접근할 수 있는 범위를 지정하는 것입니다. C++언어에서는 private, public, protected라는 세 가지 접근 제한자를 제공합니다.

private 접근 제한자
: private 접근 제한자는 해당 멤버가 클래스 내부에서만 접근할 수 있도록 합니다. 즉, 클래스의 외부에서는 해당 멤버에 대해 알 수 없고 사용할 수 없습니다. private 접근 제한자는 클래스의 캡슐화를 강화하고 데이터의 보호를 위해 사용됩니다.

public 접근 제한자

: public 접근 제한자는 해당 멤버가 클래스의 외부에서도 접근할 수 있도록 합니다. 즉, 클래스의 외부에서도 해당 멤버에 대해 알 수 있고 사용할 수 있습니다. public 접근 제한자는 클래스와 상호작용하기 위한 인터페이스를 제공하기 위해 사용됩니다.

protected 접근 제한자

: protected 접근 제한자는 해당 멤버가 클래스 내부와 파생 클래스에서만 접근할 수 있도록 합니다. 즉, 클래스의 외부에서는 해당 멤버에 대해 알 수 없고 사용할 수 없지만, 클래스를 상속받은 자식 클래스에서는 해당 멤버에 대해 알 수 있고 사용할 수 있습니다. protected 접근 제한자는 상속 관계에서 부모 클래스와 자식 클래스 사이의 공유 정보를 표현하기 위해 사용됩니다.


C++언어에서 클래스를 정의하고 사용하는 방법

다음은 C++언어에서 클래스를 정의하고 사용하는 예시 코드입니다.

// Person이라는 이름의 클래스 정의
class Person {
    // private 멤버 변수
    private:
        string name; // 이름
        int age; // 나이
        char gender; // 성별

    // public 멤버 함수
    public:
        // 생성자: 객체가 생성될 때 자동으로 호출되는 특별한 멤버 함수
        Person(string n, int a, char g) {
            name = n;
            age = a;
            gender = g;
        }

        // 소멸자: 객체가 소멸될 때 자동으로 호출되는 특별한 멤버 함수
        ~Person() {
            cout << name << " is destroyed." << endl;
        }

        // getter: private 멤버 변수의 값을 반환하는 함수
        string getName() {
            return name;
        }

        int getAge() {
            return age;
        }

        char getGender() {
            return gender;
        }

        // setter: private 멤버 변수의 값을 변경하는 함수
        void setName(string n) {
            name = n;
        }

        void setAge(int a) {
            age = a;
        }

        void setGender(char g) {
            gender = g;
        }

        // 일반 멤버 함수: 객체의 동작을 정의하는 함수
        void walk() {
            cout << name << " is walking." << endl;
        }

        void talk() {
            cout << name << " is talking." << endl;
        }

        void eat() {
            cout << name << " is eating." << endl;
        }
};

// main 함수: 프로그램의 시작점
int main() {
    // Person 클래스의 객체 생성
    Person p1("Alice", 20, 'F');
    Person p2("Bob", 25, 'M');

    // public 멤버 함수 호출
    p1.walk();
    p1.talk();
    p1.eat();

    p2.walk();
    p2.talk();
    p2.eat();

    // getter 호출
    cout << "p1's name is " << p1.getName() << endl;
    cout << "p2's age is " << p2.getAge() << endl;

    // setter 호출
    p1.setName("Anna");
    p2.setAge(30);

    // private 멤버 변수에 직접 접근하려고 하면 컴파일 에러 발생
    // p1.name = "Amy";
    // p2.age = 35;

    return 0;
}

 

 

이상으로 C++언어 클래스의 기본 개념과 특징에 대해 설명해보았습니다. C++언어 클래스는 객체지향 프로그래밍의 장점을 활용할 수 있도록 해주는 강력한 도구입니다. 클래스를 잘 정의하고 사용하면 프로그램의 구조화, 재사용성, 유지보수성 등을 향상시킬 수 있습니다.

'Computer > C, C++' 카테고리의 다른 글

C언어 extern과 static의 차이점  (0) 2023.07.17
C언어에서 클래스를 사용하는 방법  (0) 2023.07.13
C 언어 복합 대입 연산자  (0) 2023.07.11
C언어 포인터  (0) 2023.07.06
C언어 if문, while문, for문  (0) 2023.06.29