코딩/c++

C++ 기본 문법(7)

Yellow Kirin 2025. 6. 2. 20:11

C++ 기본 문법: 구조체(struct)와 클래스(class)


1. 구조체(struct)란?

여러 데이터를 하나로 묶는 사용자 정의 자료형임. 기본적으로 모든 멤버는 public으로 설정됨.


struct Player {
    string name;
    int hp;
    int mp;
};

Player p1;
p1.name = "Knight";
p1.hp = 100;
p1.mp = 50;
  • struct는 단순한 데이터 묶음용으로 자주 사용됨
  • 기능(함수)도 포함 가능함

2. 클래스(class)란?

데이터 + 함수를 하나의 단위로 묶는 객체 지향 문법의 핵심. 기본 접근 지정자는 private임.


class Dog {
private:
    string name;
public:
    void setName(string s) {
        name = s;
    }
    void bark() {
        cout << name << " : 멍멍" << endl;
    }
};

Dog d;
d.setName("바둑이");
d.bark();  // 바둑이 : 멍멍
  • class는 캡슐화(Encapsulation)를 지원함
  • 멤버 함수, 생성자, 소멸자, 상속 등 다양한 기능 포함 가능

3. 구조체와 클래스 차이

구분 struct class
기본 접근 지정자 public private
용도 데이터 묶음 객체 지향 설계
함수 포함 가능 여부 가능 가능
상속, 다형성 지원됨 (class와 동일) 완전 지원
C++ 스타일 struct도 거의 class처럼 사용 가능 OOP 중심 설계

4. 생성자와 소멸자

클래스/구조체 생성 시 자동 호출되는 특별한 함수임


struct Hero {
    int hp;
    Hero() {
        hp = 100;
        cout << "생성됨" << endl;
    }
    ~Hero() {
        cout << "삭제됨" << endl;
    }
};

구조체도 생성자/소멸자 사용 가능함


5. 상속 기본 예제


class Animal {
public:
    void eat() {
        cout << "먹는다" << endl;
    }
};

class Dog : public Animal {
public:
    void bark() {
        cout << "멍멍" << endl;
    }
};

Dog d;
d.eat();  // 상속받은 함수
d.bark(); // 자신의 함수

요약

  • struct: 단순한 데이터 묶음, 멤버 기본 public
  • class: 데이터 + 함수 포함, 멤버 기본 private
  • 둘 다 생성자/소멸자, 상속, 함수 포함 가능
  • C++에선 struct도 class처럼 사용 가능하지만 의미 구분을 위해 나눠 씀