์์ฑ์์ ์๋ฉธ์๋ฅผ ํ์ธํ๋ ๊ฐ๋จํ ์ฝ๋๋ฅผ ๋ณด๋๋ก ํ์.
#include <iostream>
using namespace std;
class SimpleClass {
private:
string name;
public:
SimpleClass(string n) : name(n) { //์์ฑ์
cout << name << " ๊ฐ์ฒด๊ฐ ์์ฑ๋์์ต๋๋ค." << endl;
}
~SimpleClass() { //์๋ฉธ์
cout << name << " ๊ฐ์ฒด๊ฐ ์๋ฉธ๋์์ต๋๋ค." << endl;
}
};
int main() {
cout << "๊ฐ์ฒด ์์ฑ ๋ฐ ์๋ฉธ ํ์ธ" << endl;
{
SimpleClass obj1("์ฒซ๋ฒ์จฐ");
SimpleClass obj2("๋๋ฒ์จฐ");
cout << "๋ธ๋ก ๋ด์์ ์์
์ค" << endl;
} // ๋ธ๋ก ๋. obj1 obj2 ์๋ ์๋ฉธ
cout << "๋ธ๋ก์ ๋ฒ์ด๋ฌ์ต๋๋ค." << endl;
return 0;
}
์์ฑ์๋ ๊ฐ์ฒด๊ฐ ๋ ๋ ํธ์ถ๋๋ ํจ์์ด๋ค. ๋ง ๊ทธ๋๋ก ํด๋์ค์ ์ธ์คํด์ค๋ฅผ ์์ฑํด์ฃผ๋ ํจ์๋ผ๊ณ ๋ณด๋ฉด ๋๋ค. ๋ณดํต ์ด๊ธฐ๊ฐ ์ค์ ๋ฑ์ ์ญํ ์ ์ํํด์ค๋ค. ์ ์ฝ๋์์๋ obj1๊ณผ obj2๋ผ๋ ๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ผ๋ฉฐ, ๊ทธ์ ๋ง๊ฒ ์์ฑ์ ํจ์๋ ๋ ๋ฒ ํธ์ถ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ฌดํ์ ์์ฐํด๋ด๊ณ ์ด์ ์ ๋ง๋ ๊ฐ์ฒด๋ค์ด ํ์ฌ๋ ์ฌ์ฉํ์ง ์์์๋ ๊ณ์ ๋จ์ ์๋ค๋ฉด, ๋ถํ์ํ ์ฉ๋์ ์ก์๋จน๊ฒ ๋๋ค.
๊ทธ๋ ๊ธฐ์ ์๋ฉธ์ ์ญ์ ์กด์ฌํ๋ค. ์๋ฉธ์๋ ๊ฐ์ฒด์ ์๋ช ์ด ๋๋ ๋ ํธ์ถ๋๋ฉฐ, ๋จ์ ์์๋ค์ ์ ๋ฆฌํ๋ค(๊ฐ์ฒด์ ์๋ฉธ์ ์ปดํ์ผ๋ฌ/๋ฐํ์ ๋ฑ์ด ํด์ค๋ค). ๋ท์ ๋ฆฌ ๋๋์ผ๋ก ์๊ฐํ๋ฉด ์ข์ ๋ฏ ํ๋ค. C++์๋ ๊ธฐ๋ณธ ์๋ฉธ์๊ฐ ์กด์ฌํ๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ํน์ ํ ์ํฉ์์ ์ฐ๋ฆฌ๋ ํด๋์ค ๋ด์ ์ง์ ์๋ฉธ์๋ฅผ ์ ์ํด์ฃผ์ด์ผ ํ ๋๊ฐ ์๋ค. ๋์ ๋ฉ๋ชจ๋ฆฌ๋ค์ด๋ค.
๊ผญ ์์ฑ์์ ์๋ฉธ์๊ฐ ์๋๋๋ผ๋(ํด๋์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ผ๋) ๋์ ๋ฉ๋ชจ๋ฆฌ๋ ์๋นํ ๊ท์ฐฎ์ ์กด์ฌ๋ค. new, new[], malloc์ผ๋ก ์ ์๋์๋ค๋ฉด ๋ฐ๋์ delete, delete[], free()๋ฅผ ์ฌ์ฉํด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํด์ฃผ์ด์ผ ํ๋ค. ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ๊ธฐ๋ณธ ์๋ฉธ์ ์ธ ์ง์ ์๋ฉธ์๋ฅผ ์ ์ํ๋ ๊ฒ์ด ํ์ํ๋ค. ์ง์ ํด์ ํด์ฃผ์ง ์์ผ๋ฉด ํ ๋ฉ๋ชจ๋ฆฌ ์์ญ์์ ๋ฉ๋ชจ๋ฆฌ ๋์๋ฅผ ์ผ์ผํจ๋ค. ์ด ๋ฉ๋ชจ๋ฆฌ๋ค์ ์ฐ๋ฆฌ ๋์ ๋ณด์ด์ง ์์ง๋ง, ํ๋ก๊ทธ๋จ ์์ฒด๊ฐ ๋๋ ๋๊น์ง ๊ณ์ํ์ฌ ๋์ ๋๊ธฐ์... ์๋ฒ์ ๊ฐ์ ์ฅ๊ธฐ ํ๋ก๊ทธ๋จ์์ ๊ฐ์๋ก ์์ค์ด ์ปค์ง๋ค. ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ๋ฅผ ํด์ฃผ๋ RAII ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋์ง๋ง ์ญ์๋ ๋ชจ๋ ์ํฉ์์ ๋ง๋ฅ์ ์๋๋ค.

๊ทธ๋ ๊ธฐ์ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ค์ ์ด ์ฌ์ง ์ ์ฌ์์น๊ตฌ์ ๊ฐ๋ค๊ณ ๋ณผ ์๋ ์๋ค. ์์ผ๋ก ์ฐ๋ฆฌ ๋ชจ๋ ๊ท์ฐฎ๋ค๊ณ ์๊ฐํ์ง ๋ง๊ณ "๋ฉ๋ชจ๋ฆฌ ํด์ ํ๊ณ ์ถ์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ ํด์ ํ๊ณ ์ถ๋ค๊ณ ๋งํด"๋ผ๋ ์๋จ์ ๋์์ ํด๋ณด๋ ๊ฑด ์ด๋จ๊น?
'๊ณต๋ถ > ์ฝ๋ฉ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [C++] vector์ pair ์ฐ์ต (2) | 2025.08.17 |
|---|---|
| [C++] ๊ทธ์น๋ง ์ด๋ ๊ฒ๋ผ๋ ํ์ง ์์ผ๋ฉด iostream์ด ์๋ ๋์๊ฒ ๊ด์ฌ๋ ์ฃผ์ง ์๋๊ฑธ(๋ถ๋ฆฌ ์ปดํ์ผ) (4) | 2025.08.11 |
| [c++] ๋ฐฑ์ค 10828 ์คํ (0) | 2025.08.02 |
| [c++] ๋งฅ๋๋ ๋ ํ๋ถ๊ธฐ ์ฃผ๋ฌธ ํ๋ก๊ทธ๋จ (1) | 2025.07.29 |
| [c++] ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ (3) | 2025.07.27 |