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