-C 구조체
struct Data
{
int x;
int y;
};
=> 데이터 묶음
struct Data
{
int x;
int y;
void print(){
//함수 가질 수 있음
}
};
=> C++ 에서는 struct = class랑 거의 동일
그럼 class와는 뭐가 다른가???
struct A{
int x; // 기본 public
};
class B{
int x; // 기본 private
};
=> 차이 딱 하나 기본 접근이 다름
class Foo
{
int x;
};
=> 이건 설계도
Foo a;
Foo b;
이 순간 a => 객체
b => 객체
=> 객체는 실제 메모리에 존재하는 인스턴스
class Foo {
public:
void set(int x){
this->x = x;
}
private:
int x;
};
여기서 this는
: 이 함수를 호출한 객체의 주소
Foo a;
Foo b;
a.set(10); // this = &a
b.set(20); // this = &b
=> 함수는 하나
=> 객체는 여러 개
=> 그래서 this 필요
class Foo {
public:
Foo(int x) {
this -> x = x;
}
private:
int x;
};
Foo f(10); // 무조건 초기화 됨
=> 객체는 항상 정상 상태로 시작한다
1️⃣ 클래스 이름과 똑같은 이름
2️⃣ 리턴 타입이 없다 (void도 없음)
3️⃣ 객체 생성 시 자동 호출
class FooP
public:
~Foo(){
//정리코드
}
};
class File{
public:
File() {
//파일열기
}
~File(){
//파일닫기
}
};
열고닫는걸 사람이 기억 안해도 됨