์ง๊ธ ์ฌ์ฉ์ค์ธ ์์ง ๊ธฐ์ค์ผ๋กย
std::list<Coin*> coinList;
Coin* coin = new Coin(x, y);
coinList.push_back(coin);
delete coin;
ํ๋ฉด coin์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋๋๊ฑธ๋ก ์๊ณ ์๋๋ฐ
coin๋ณ์๊ฐ ํด๋น ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ด์ ๊ฐ๋ฆฌํค์ง ์๋๋ค๋ ๋ป์ ํด์ ๋ผ๊ณ ์๊ณ ์์ด์
์์ฒ๋ผ ์ฝ๋ฉํ๋ฉด ๋ฆฌ์คํธ์๋ ๊ทธ๋๋ก ๋จ์์๊ณ ์ฝ์ธ์์๋ง ์ฌ๋ผ์ง๋๊ฑด๊ฐ์?
์ ๋ฌ๋ฉด ๋ฆฌ์คํธ์์ ์ ๊ทผํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ์ค๋ฅ ๋ฐ๊ฑฐ๊ฐ์๋ฐ
๋ฆฌ์คํธ์์ coin ์ฃผ์๋ ๊ฐ์ง๊ณ ์์๊บผ๊ฐ๊ณ ๊ทธ coin ์ฃผ์์ ์ ๊ทผํด๋ณด๋๊น ์ด๋ฏธ ํด์ ๋ ๋ฉ๋ชจ๋ฆฌ์ฌ์ ์ค๋ฅ๋ฐ๊บผ๊ฐ์
๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋๋ฉด์ ๊ฐ์ด ๋จ์์๋๊ฒ ์๋๋ผ ์ฃผ์๊ฐ์ด๋ ํต์งธ๋ก ๋ค ์ฌ๋ผ์ง๋๊ฑด๊ฐ์
์ฐธ์กฐ์๋ ์๊ฐ์ ๋ค๋ฅด๊ฒ ํด์ผ๋๋๋ณด๊ตฐ์... ๊ฐ์ฌํฉ๋๋ค
๋ฆฌ์คํธ๋ก ์ฃผ์๊ฐ์ ์ ์ฅํ๊ฑฐ๊ณ . delete coin๋ coin์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋๊ฑฐ์์ด. ๊ทธ๋ฌ๋ฉด ๋ฆฌ์คํธ์ ์ ์ฅ๋ int ์ฃผ์๊ฐ ์์ฒด๋ ๋จ์์๋๋ฐ ๊ทธ ๊ฐ์ ์ด์ฉํด ์ ๊ทผํ๋ ค๊ณ ํ๋ ๊ทธ๊ณณ์ ์ค์ ํ ๋น๋๊ฒ ์์ด์ null์ด ๋จ๊ฑฐ๋ ์ค๋ฅ ๋จ๊ฑฐ๋ ๋์ค ํ๋์ผ๋ฏ.
๋์ ํ ๋น์ ํ๊ธฐ๋๋ฌธ์ coin ๊ณผ list์์๋ค์ด์๋ coin์ ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ค coin์ ๋ฉ๋ชจ๋ฆฌ ํด์ ํ๊ธฐ๋๋ฌธ์ list์์์๋ coint๋ ๋์ผํ๊ฒ ํด์ ๋๋ค. ํ์ง๋ง coin์ nullptr์ ๋ฃ์ด์ฃผ์ง ์์์ coin์ ๋๊ธ๋ง ํฌ์ธํฐ ์ํ์ด๋ค
์ ๊ฐ coin์ 10๊ฐ๊น์ง ๋ง๋ค์ด์ list์์ ๋ณด๊ดํ๊ณ ์ถ์๋ฐ ์ด๋ป๊ฒํ๋๊ฒ ๋ฒ ์คํธ์ผ๊น์
coin ์ ํ ๋นํ๊ณ ๋ ๋ฃ์ด์ฃผ๋ฉด ๋์ง
coin ๋์ ํ ๋น -> list.push_back -> coin ๋์ ํ ๋น ์ด๊ฑฐ ๋ฐ๋ณตํ๋ฉด ๋๋์?
for(int i = 0; i < 10; ++i) { Coin* coin = new Coin(x, y); coinList.push_back(coin); } for๋ฌธ์์์ ์์ฑ๋๋ ์ฝ์ธ์ ๊ฐ๊ฐ ๋ค๋ฅธ ์ฝ์ธ์ด๋๊ฑด ์์ง?
ใ ใ ๊ทธ๋ฆฌ๊ณ C++์์๋ ๋๋์ง ๋ชจ๋ฅด๊ฒ ๋๋ฐ c# ๋ฌธ๋ฒ์ผ๋ก๋ coinList.push_back(new Coin(x,y)); ์ด๋ ๊ฒ๋ ๊ฐ๋ฅํจ.
ํด๋์ค์๋ฉธ์์์ coinList์ ํฌ๊ธฐ๋งํผ ๋ด๋ถ์ ์ ๊ทผํด์ deleteํด์ฃผ๋ฉด๋จ
ใ ใ (121.134)์ด ๋งํ๊ฑด C++์์๋๋๊ณ ์์๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฆฐ๋ค
์... ๋ค๋ฅธ๊ฑด ๋ค ์ดํดํ๋๋ฐ ์๋ฉธ์ ์ ์ฉํ๋๊ฒ ์ด๋ ต๋ค์ list์์ pop_back์ ์ํ๊ณ ์์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๋๊ฑฐ๋ผ๊ณ ์ดํดํ๋ฉด ๋๋์
์๋ฉธ์์์ pop_back์ผ๋ก ๋ฐ์์ค๊ฑด ๋ฐ๋ณต์๋ก ์ ๊ทผํ๊ฑด ์ ๊ทผํด์ ํด์ ํ๋ผ๋๋ง์ผ๊บผ์ผ.
10๊ฐํ ๋นํ๊ณ ๋๋ ค์ธ์ผ์์ผ๋ฉด ํ๋ง๋ ํจ๊ณผ์ ์ด๊ณ ํธํ๊ฒ ์ฐ๊ณ ์ถ์ผ๋ฉด ์ค๋งํธํฌ์ธํฐ ์ฐพ์๋ด