// Main.cpp
class 클래스명
{
public:
멤버변수자료형 멤버변수명;
반환자료형 멤버함수명(매개변수자료형 매개변수명) {}
};
int main(void)
{
클래스명 객체이름;
return 0;
}
객체 지향 프로그래밍(Object-Oriented Programming, OOP)
클래스(설계도)를 통해 만들어진 객체(실체, Object, Instance, 개체)간의 상호작용을 구현하기 위한 프로그래밍.
ex) DNA(클래스)를 통해 사람 A(객체)와 사람 B(객체)가 태어났다(생성되었다). 사람 A가 사람 B에게 인사한다. 인사를 받은 사람 B가 사람 A에게 인사한다, … 이러한 상호작용을 구현하기 위한 프로그래밍.
C++에서 객체를 생성하는 두가지 방법
// Main.cpp
#include <iostream>
class Human
{
public:
float Height;
float Weight;
};
int main(void)
{
Human Kim;
Human* Choi = new Human();
Kim.Height = 170.f;
Kim.Weight = 58.f;
Choi->Height = 173.f;
Choi->Weight = 80.f;
std::cout << '(' << Kim.Height << ", " << Kim.Weight << ')' << std::endl;
std::cout << '(' << Choi->Height << ", " << Choi->Weight << ')' << std::endl;
delete Choi;
Choi = nullptr;
return 0;
}
Human Kim;
객체 Kim은 스택메모리에 생성됨
지역변수이므로 생명주기가 함수와 같음.

Human* Choi = new Human();
힙 메모리에 공간이 동적할당되면서 Human 객체가 생성됨.
포인터 Choi는 해당 Human객체의 시작메모리 주소를 담고 있게 됨.
(힙 메모리의 데이터는 함수가 끝난다고 해서 사라지지 않음)
그러므로,
new를 사용한 뒤에는 반드시 delete를 써야함.
메모리 릭 방지를 위해 delete 필수임

메모리 릭 (누수) 추적 함수
// Main.cpp
#include <crtdbg.h> // _CrtSetDbgFlag(), _CrtSetBreakAlloc()
class Human
{
public:
float Height;
float Weight;
};
int main(void)
{
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
// 메모리 릭 추적.
// _CrtSetBreakAlloc(161);
// 메모리 릭 지점에 자동으로 중단점을 걸어주는 함수.
Human* Park = new Human();
//delete Park;
//Park = nullptr;
return 0;
}
뭐 대충 요런 함수도 있다~ 정도로만 넘어간다.
'C++' 카테고리의 다른 글
| STL (0) | 2026.03.24 |
|---|---|
| 기본 생성자와 오버로딩 (0) | 2026.03.12 |
| C++로 전직 시스템과 전투 시스템 구현해보기 (0) | 2026.03.10 |
| Class (0) | 2026.03.09 |
| 포인터 (0) | 2026.03.05 |