C++ 공부 (9/21)

wsung·2026년 1월 21일

Day 9 — 클래스 · 객체 · this · 생성자/소멸자

구조체 vs 클래스

-C 구조체

struct  Data
{
	int x;
    int y;
};

=> 데이터 묶음

  • C++ 구조체
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 => 객체
=> 객체는 실제 메모리에 존재하는 인스턴스

this 포인터 정리

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); // 무조건 초기화 됨
=> 객체는 항상 정상 상태로 시작한다

생성자의 조건 3가지 (외워라)

1️⃣ 클래스 이름과 똑같은 이름
2️⃣ 리턴 타입이 없다 (void도 없음)
3️⃣ 객체 생성 시 자동 호출

소멸자는 왜 필요한가?

class FooP
public:
	~Foo(){
    	//정리코드
	}
};
  • 소멸자는 언제 호출되는가?
    - 스택객체 -> scope 종료
    • unique_ptr -> 자동
    • delete -> 직접

RAII가 여기서 완성됨

class File{
public:
	File() {
    	//파일열기
	}
    
    ~File(){
    	//파일닫기
	}
};

열고닫는걸 사람이 기억 안해도 됨

profile
0부터 시작하는 백엔드

0개의 댓글