class 정의

class 클래스명 {
   // 멤버 변수(상태), 멤버 함수(행동)..
};

접근 제어 지시자

예시

class MyCar {
private:
    //멤버변수
    int fuel = 0;
    bool power = false;

public:
    //메소드
    void go() {
        this->fuel--;
    }

    void oiling(int n) {
        this->fuel += n;
    }

    void fuel_check() {
        std::cout << "연료 : " << fuel << std::endl;
    }
}

class 생성 및 사용

MyCar car = MyCar(); //생성

//메서드 호출
car.oiling(100);
car.fuel_check();
for (int i = 0; i < 10; i++) car.go();
car.fuel_check();
car.oiling(100);
for (int i = 0; i < 10; i++) car.go();
car.fuel_check();

Constructor and Destructor

class MyCar {
private:
    //멤버변수
    int fuel = 0;
    bool power = false;

public:
    //생성자
    MyCar() {
        this->fuel = 100;
        this->power = true;
    }
    //생성자 다중 정의
    MyCar(int n) {
        this->fuel = n;
        this->power = true;
    }
		//생성자 
		MyCar(int a, bool b): fuel(a), power(b){}
    //소멸자(다중 정의 불가능)
    ~MyCar() {
        std::cout << "소멸되었습니다." << std::endl;
    }
};

연산자 오버로딩

#include <iostream>

using namespace std;

class NUMBOX
{
private:
	int num1, num2;
public:
	NUMBOX(int num1, int num2) : num1(num1), num2(num2) { }
	void ShowNumber() 
	{
		cout << "num1: " << num1 << ", num2: " << num2 << endl;
	}
	NUMBOX operator+(NUMBOX &ref)
	{
		return NUMBOX(num1+ref.num1, num2+ref.num2);
	}
};

int main()
{
	NUMBOX nb1(10, 20);
	NUMBOX nb2(5, 2);
	NUMBOX result = nb1 + nb2;

	nb1.ShowNumber();
	nb2.ShowNumber();
	result.ShowNumber();
}