class 정의
class 클래스명 {
// 멤버 변수(상태), 멤버 함수(행동)..
};
접근 제어 지시자
- public: 어디서든 접근 ( 외부 접근 가능)
- private: 클래스 내부에 정의된 함수에서만 접근 허용
- protected: 기본적으로 private 이지만, 상속관계 시 유도 클래스 접근 허용
예시
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();
}