#1 클래스란?
사용자가 편의상 정의한 자료형이다. 구조체와 문법이 유사하나 생성자, 소멸자 등이 존재한다. 클래스를 만든다는 것은 새로운 자료형을 사용하겠다는 의미이다.
클래스 정의 최종 형태
클래스의 기본형태는 다음과 같다.
class MyClass // 클래스 선언(헤더)
{
public: // 접근제한자
MyClass() // 기본생성자
{
}
MyClass(int number) // 매개변수 생성자
{
this->number_= number;
}
~MyClass() // 기본소멸자
{
}
int Increment() // 멤버함수
{
this->number_ += 1;
}
private: // 접근제한자
int number_; // 멤버변수
}
#2 클래스 선언하기
class
키워드로 클래스를 선언한다. 클래스는 생성자, 소멸자, 멤버변수, 멤버함수를 갖는다.
class MyClass // 클래스 선언
{
}
접근제한자
클래스는 public
과 private
을 접근제한자를 갖는다.
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_;
}