C++에서 클래스는 객체 지향 프로그래밍의 핵심 요소로, 객체의 데이터와 동작을 캡슐화하여 코드의 재사용성과 유지보수성을 향상시킵니다. 클래스를 사용하면 다양한 객체를 모델링하고, 객체 지향 프로그래밍의 장점을 효과적으로 활용할 수 있습니다
클래스의 기본요소
class 클래스이름 {
public:
// 공개 멤버 변수 및 메소드
private:
// 비공개 멤버 변수 및 메소드
};
public: 외부에서 접근 가능한 멤버들
private: 클래스 내부에서만 접근 가능한 멤버들
멤버 변수는 클래스의 인스턴스(객체)와 연관된 데이터를 저장합니다.
class Person {
public:
std::string name; // 이름
int age; // 나이
};
메소드는 클래스 내부의 함수로, 객체의 동작을 정의합니다.
class Person {
public:
std::string name;
int age;
// 멤버 변수에 값을 설정하는 메소드
void setDetails(std::string n, int a) {
name = n;
age = a;
}
// 멤버 변수를 출력하는 메소드
void printDetails() {
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
};
사용예시
Person p; // Person 객체 생성
p.setDetails("John", 25);
p.printDetails(); // 출력: Name: John, Age: 25
생성자 소멸자?
생성자(Constructor): 객체가 생성될 때 자동으로 호출되어 멤버 변수를 초기화합니다.
소멸자(Destructor): 객체가 소멸될 때 자동으로 호출되며, 사용한 자원을 정리합니다.
ex)
class Person {
public:
std::string name;
int age;
// 생성자: 객체 생성 시 호출
Person(std::string n, int a) {
name = n;
age = a;
}
// 소멸자: 객체 소멸 시 호출
~Person() {
std::cout << "Person object destroyed!" << std::endl;
}
void printDetails() {
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
};
Person p("Alice", 30); // 생성자 호출
p.printDetails(); // 출력: Name: Alice, Age: 30
// 모든 코드가 실행 된 이후, 프로그램 종료 시 소멸자가 자동 호출 - "Person object destroyed!"
즉 , 생성자는 객체가 생성될 때 자동으로 호출되는 함수입니다.
클래스 이름과 동일한 이름을 가지며 반환 타입이 없습니다( void도 안씀)
생성자의 특징?
- 자동 호출: 객체가 생성될 때 자동으로 호출됩니다.
- 초기화 담당: 객체의 속성(멤버 변수)을 초기화하는 데 사용됩니다.
- 오버로딩 가능: 여러 개의 생성자를 정의할 수 있습니다(매개변수에 따라 다르게 동작).
소멸자는 객체의 수명이 끝날때 호출됩니다.
클래스 앞에 ~를 붙여 정의 하며 반환타입과 매개변수가 없습니다.
소멸자의 특징?
- 자동 호출: 객체가 소멸될 때 자동으로 호출됩니다.
- 정리 담당: 동적 메모리 해제, 파일 닫기 등 정리 작업에 사용됩니다.
- 오버로딩 불가능: 소멸자는 클래스당 하나만 정의할 수 있습니다.
왜 있어야하는 걸까?
이 둘을 활용하면 쓸때만 메모리를 잠깐 써주고 알아서 자동으로 없애줘서 메모리의 누수를 막을 수 있다.
'언리얼(Unreal) > 엔진' 카테고리의 다른 글
24.12.07 언리얼(스마트 포인터에 대하여) (0) | 2024.12.07 |
---|---|
24.12.06 언리얼 (템플릿에 대하여) (1) | 2024.12.06 |
24.12.06 언리얼( Cpp의 상속의 개념) (0) | 2024.12.06 |
24.12.06 언리얼(포인터에 대하여) (0) | 2024.12.06 |
24.12.05 언리얼(Cpp 기본개념중 헷갈릴만한 것만) (0) | 2024.12.05 |