클래스 default 생성자
- 클래스를 생성자에 default를 사용하면 멤버 변수의 값들은 초기화 됨
ex)
class Tmp{
public:
Tmp() = default;
}
클래스 생성자 초기화 리스트
- 클래스의 멤버 변수의 값을 생성자의 초기화 리스트를 통해 원하는 값으로 초기화 가능
ex)
class Tmp{
public:
Tmp(): num1(10), num2(20), name("이름") {}
private:
int num1;
int num2;
std::string name;
}
클래스 소멸자
- 클래스 객체가 삭제될 때 이뤄지는 작업을 정의할 수 있음
ex)
class Tmp{
public:
Tmp() = {//생성될 때 이뤄지는 작업} //생성자
~Tmp() = {//소멸될 때 이뤄지는 작업} //소멸자
}
동적 메모리 할당
- new와 delete를 사용해 동적 메모리를 할당하고 해제할 수 있음
- new로 할당되는 값은 heap 영역에 저장되기에 *을 사용해서 값을 참조할 수 있음
- *로 참조한 클래스의 함수를 사용할 때는 →를 사용
ex)
class Info{
public:
Info(){
data = new int;
data_arr = new int[3];
}
void Dispose(){
delete data;
delete[] data_arr;
}
private:
int* data;
int *data_arr;
};
int main(){
Info *info = new Info();
info->Dispose();
delete info;
return 0;
}
static 클래스
- 어느 클래스에서나 인스턴스 없이 사용 가능
- 유틸리티 함수에 유용
캡슐화
- 용도가 비슷한 데이터들을 모아 코드 재활용성과 정보 은닉
- Setter, Getter 를 통해 멤버 변수에 접근
ex)
class KingInfo{
public:
KingInfo() { };
public:
void SetValue(const std::string name, const std::string son){
name_=name;
son_=son;
}
std::string GetNameSon() const {
return name_ + "의 아들 " + son_;
}
private:
std::string name_;
std::string son_;
};
int main(){
KingInfo king_info;
king_info.SetValue("name","son");
std::cout << king_info.GetNameSon() << std::endl;
return 0;
}
객체지향 상속
- 다른 클래스의 정보를 가져와 사용한다
- 코드 재사용을 줄이고 유지 보수에 용이함
ex)
class Info{
public:
std::string name_;
int year_;
};
class GoodKing : public Info {
public:
GoodKing(const std::string country) : country_(country) {};
void Display(){
std::cout << country_ << " " << name_ << "연도 : " << year_ << std::endl;
}
private:
std::string country_;
};
//Info의 구조를 public으로 GoodKing에서 상속 받아서 사용
'프로그래밍 C++' 카테고리의 다른 글
[c++] 24-08-30 공부 정리 (0) | 2024.08.30 |
---|---|
[c++] 24-08-29 공부 정리 (0) | 2024.08.29 |