클래스
데이터와 함수를 하나의 묶음으로 취급하는 사용자 정의 데이터.
클래스를 이해하는 것은 객체 지향 프로그래밍(OOP)의 핵심을 이해하는 것.
클래스는 '틀' 혹은 '설계도'와 같으며, 그 안에는 변수(데이터)와 함수(메서드)가 포함되어 있다.
이러면 변수와 함수를 멤버라고 한다.
클래스의 정의
class ClassName
{
//멤버 변수
//멤버 함수
};
ClassName : 정의하는 클래스의 이름
이 안에 멤버 변수와 멤버 함수를 원하는 대로 정의한다.
클래스의 구조
클래스는 멤버 변수와 멤버 함수로 구성. 멤버 변수는 클래스가 가지는 데이터를 정의, 멤버 함수는 그 데이터를 다루는 방법을 정의.
멤버 변수와 함수는 보통 '접근 지시자'에 의해 제어된다. 'public', 'private', 'protected'와 같은 접근 지시자를 사용하여 멤버들의 접근 권한을 설정.
- public은 어떤 곳에서든 접근이 가능
- private은 클래스 내부에서만 접근이 가능
- protected는 클래스 내부와 해당 클래스를 상속받은 자식 클래스에서만 접근이 가능
C++에서는 보통 멤버 변수는 private로, 멤버 함수는 public으로 설정하는 것이 일반적. 멤버 변수에 직접 접근하는 것을 방지하고, 멤버 함수를 통해 멤버 변수를 안전하게 조작하는 것을 보장.
클래스와 객체
클래스는 '틀' 혹은 '설계도'이고, 객체는 그 틀을 바탕으로 만들어진 '실체'이다.
클래스와 객체의 이러한 관계를 잘 이해하는 것이 객체 지향 프로그래밍(OOP)의 핵심 파악하는데 큰 도움이 된다.
클래스는 데이터(멤버 변수)와 기능(멤버 함수)을 하나로 묶어 놓은 설계도이다. 객체는 이 설계도를 따라 만들어진 실체로, 클래스에 정의된 멤버 변수와 멤버 함수를 가지게 된다. 여러 객체는 같은 클래스를 바탕으로 만들어졌다면, 그 클래스에 정의된 멤버 변수와 멤버 함수를 공유하게 된다. 하지만 각 객체의 멤버 변수는 독립적으로 값을 유지하며, 이를 통해 각 객체는 자신만의 상태를 가진다.
예시) Student 클래스를 기본으로 만들고 mathstudent 와 Englishstudent를 만들면 각 객체가 생성이 된다. 두 객체는 자신의 변수를 가지고 클래스의 기본 함수를 사용할 수 있습니다.
getter 과 setter 함수
private로 지정된 변수 값을 제어하기 위한 함수이다. getter은 값을 가져올때, setter은 멤버 변수를 바꿀 때 사용한다.
사용예시) 플레이어의 클래스에서 현재 Hp 값을 가져올때는 getter을 사용. Hp가 감소되는 이벤트때 setter을 사용한다.
생성자
객체를 생성할 때 자동적으로 호출되는 함수로 클래스와 같은 이름의 형태를 띈 함수이며 리턴형이 없고, 리턴 하지도 않는 특징을 가지고 있다.
생성자는 객체를 생성과 동시에 초기화를 해주기 위해서 필요하다.
- 기본 생성자 ex) Student() {};
- 매개변수가 있는 생성자 ex) Student(string a, int b) {};
- 기본 매개변수가 있는 생성자 ex) Student(string a = "math", int b = 3) {};
이렇게 3개를 구현할 수 있는데, 보통 그냥 매개변수가 있는 생성자를 만들고 거기에 값을 넣는 방식으로 진행한다.
생성자의 특징
- 생성자의 목적은 객체가 생성될 때 필요한 초기 작업을 위함.
- 생성자 함수는 오직 한번만 실행
- 생성자 함수의 이름은 클래스 이름과 동일하게 작성.
- 생성자 함수의 원형에 리턴 타입을 선언하지 않는다. (void도 안된다)
- 생성자는 중복 가능하다. (대신 중복된 생성자 중 하나만 실행된다.)
소멸자
객체 생성시 생성자 함수가 실행되는 것처럼 객체 소멸 시 소멸자 함수가 반드시 실행 된다.
소멸자는 객체가 소멸되는 시점에서 자동으로 호출되는 클래스의 멤버 함수.
ex )
class Student
{
//멤버 함수
//멤버 변수
...
~Student(); //소멸자 함수 선언
};
Student::~Student() //소멸자 함수 구현
{
...
}
소멸자 함수는 리턴타입, 매개변수가 없다. 그리고 생성자와는 다르게 하나만 존재한다.
소멸자의 특징
- 소멸자의 목적은 객체가 사라질 때 필요한 마무리 작업
- 소멸자의 이름은 클래스 이름 앞에 ~를 붙인다.
- 소멸자는 리턴 타입이 없으며 어떤 값도 리턴해서도 안된다.
- 소멸자는 오직 한개만 존재하여 매개변수를 가지지 않는다.
- 소멸자가 선언되어 있지 않으면 기본 소멸자가 자동으로 생성된다. (기본 소멸자는 아무 일도 하지 않고, 단순 리턴하도록 만들어진다.)
'코딩 > C++' 카테고리의 다른 글
| 메모리 관리 (0) | 2025.01.02 |
|---|---|
| 객체 지향 프로그래밍 (1) | 2024.12.27 |
| 동적 배열 할당 (1) | 2024.12.23 |
| 06. 참조자_1 (1) | 2022.07.14 |
| 05. 자료형 bool (1) | 2022.07.12 |