[ C++ ] 클래스 사용법

#1 클래스란?

사용자가 편의상 정의한 자료형이다. 구조체와 문법이 유사하나 생성자, 소멸자 등이 존재한다. 클래스를 만든다는 것은 새로운 자료형을 사용하겠다는 의미이다.

클래스 정의 최종 형태

클래스의 기본형태는 다음과 같다.

class MyClass // 클래스 선언(헤더)
{
    public: // 접근제한자
        MyClass() // 기본생성자
        {

        }

        MyClass(int number) // 매개변수 생성자
        {
            this->number_= number;
        }

        ~MyClass() // 기본소멸자
        {

        }

        int Increment() // 멤버함수
        {
            this->number_ += 1;
        }

    private: // 접근제한자
        int number_; // 멤버변수
}

#2 클래스 선언하기

class 키워드로 클래스를 선언한다. 클래스는 생성자, 소멸자, 멤버변수, 멤버함수를 갖는다.

class MyClass // 클래스 선언
{

}

접근제한자

클래스는 publicprivate을 접근제한자를 갖는다.

class MyClass
{
    public: // 접근제한자

    private: // 접근제한자
}

멤버변수

클래스는 멤버변수를 갖는다. 멤버변수는 보통 private에 둔다. 멤버변수는 언더바를 통해 표기한다.

class MyClass
{
    public:

    private:
        int number_; // 멤버변수 정의
}

this

클래스로 인스턴스를 생성할 때 인스턴스의 주소는 this라는 특별한 포인터에 저장된다. this 포인터는 편의상 사용한다.

class MyClass
{
    MyClass()
    {
        cout << this << endl; // 인스턴스 생성 시 주소 출력
    }
}

int main()
{
    MyClass a = MyClass(); // 인스턴스 생성
    cout << &a << endl; // 인스턴스의 주소 출력
}

생성자 정의

생성자를 통해 클래스의 인스턴스를 생성할 수 있다.

class MyClass
{
    public:
        MyClass() // 기본생성자
        {

        }

        MyClass(int number) // 매개변수가 있는 생성자
        {
            this->number_= number;
        }

    private:
        int number_;
}

소멸자 정의

소멸자를 통해 객체를 소멸시킬 수 있다. 별다른 실행을 안하면 프로그램 종료 시 객체는 소멸된다.

class MyClass
{
    public:
        MyClass()
        {

        }

        MyClass(int number)
        {
            this->number_= number;
        }

        ~MyClass() // 소멸자
        {

        }

    private:
        int number_;
}

멤버함수

생성자와 소멸자는 클래스의 특별한 메서드다. 그외의 메서드는 구조체가 함수를 정의한 것처럼 정의를 할 수 있다.

class MyClass
{
    public:
        MyClass()
        {

        }

        MyClass(int number)
        {
            this->number_= number;
        }

        ~MyClass()
        {

        }

        int Increment() // 멤버함수 정의
        {
            this->number_ += 1;
        }

    private:
        int number_;
}