๋ชฉ๋ก์ ์ฒด ๊ธ (1103)
KoreanFoodie's Study
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzNZUp/btrPycYQpHv/HGK7uCKCFHNvxpaGkwyrEk/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 30 : ์๋ฒฝ ์ ๋ฌ์ด ์คํจํ๋ ๊ฒฝ์ฐ๋ค์ ์ ์์๋๋ผ ํต์ฌ : 1. ์๋ฒฝ ์ ๋ฌ์ ํ ํ๋ฆฟ ํ์ ์ฐ์ญ์ด ์คํจํ๊ฑฐ๋ ํ๋ฆฐ ํ์์ ์ฐ์ญํ์ ๋ ์คํจํ๋ค. 2. ์ธ์๊ฐ ์ค๊ดํธ ์ด๊ธฐ์น์ด๊ฑฐ๋ 0 ๋๋ NULL ๋ก ํํ๋ ๋ ํฌ์ธํฐ, ์ ์ธ๋ง ๋ ์ ์ static const ๋ฐ constexpr ์๋ฃ ๋ฉค๋ฒ, ํ ํ๋ฆฟ ๋ฐ ์ค๋ณต์ ์ฌ๋ ํจ์ ์ด๋ฆ, ๋นํธํ๋์ด๋ฉด ์๋ฒฝ ์ ๋ฌ์ด ์คํจํ๋ค. ์๋ฒฝ ์ ๋ฌ์ ๋จ์ํ ๊ฐ์ฒด๋ค์ ์ ๋ฌํ๋ ๊ฒ๋ง์ด ์๋๋ผ, ๊ทธ ๊ฐ์ฒด๋ค์ ์ฃผ์ ํน์ง, ์ฆ ํ์, ์ผ๊ฐ/์ค๋ฅธ๊ฐ ์ฌ๋ถ, const ๋ volatile ์ฌ๋ถ๊น์ง๋ ์ ๋ฌํด์ผ ํ๋ค. ์์๋ฅผ ๋ณด์...
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bliAQ8/btrPys1sn8y/0EaaRjvllHWVnK62mi3Gs1/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 29 : ์ด๋ ์ฐ์ฐ์ด ์กด์ฌํ์ง ์๊ณ , ์ ๋ ดํ์ง ์๊ณ , ์ ์ฉ๋์ง ์๋๋ค๊ณ ๊ฐ์ ํ๋ผ ํต์ฌ : 1. ์ด๋ ์ฐ์ฐ๋ค์ด ์กด์ฌํ์ง ์๊ณ , ์ ๋ ดํ์ง ์๊ณ , ์ ์ฉ๋์ง ์์ ๊ฒ์ด๋ผ๊ณ ๊ฐ์ ํ์. 2. ํ์๋ค๊ณผ ์ด๋ ์๋ฏธ๋ก ์ง์ ์ฌ๋ถ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ ์๋ ๊ฒฝ์ฐ์๋ ๊ทธ๋ฐ ๊ฐ์ ์ ๋ ํ์๊ฐ ์๋ค. ์๋ง C++11 ์์ ๊ฐ์ฅ ์ฃผ๋ ๊ฐ๋ฅ์ ์ด๋ ์๋ฏธ๋ก (move semantics) ์ผ ๊ฒ์ด๋ค. ํ์ง๋ง ๋ชจ๋ ๊ฒฝ์ฐ์ ์ด๋ ์ฐ์ฐ์ด ๊ฐ๋ฅํ ๊ฒ์ ์๋๊ณ , ๋ ๋ณต์ฌ๋ณด๋ค ์ ๋ ดํ ๊ฒ์ ์๋๋ค. ์๋ฅผ ๋ค์ด, std::vector ์ ๊ฒฝ์ฐ std::move ์ฐ์ฐ์, ์ปจํ ์ด๋์ ์๋ ์..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/PUGmp/btrPyGE8i0D/KSqesrckvCV5nIJgScvrk1/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 28 : ์ฐธ์กฐ ์ถ์ฝ์ ์์งํ๋ผ ํต์ฌ : 1. ์ฐธ์กฐ ์ถ์ฝ์ ํ ํ๋ฆฟ ์ธ์คํด์คํ, auto ํ์ ์ฐ์ญ, typedef ๊ณผ ๋ณ์นญ ์ ์ธ์ ์ง์ ๋ฐ ์ฌ์ฉ, decltype ์ ์ง์ ๋ฐ ์ฌ์ฉ์ด๋ผ๋ ๋ค ๊ฐ์ง ๋ฌธ๋งฅ์์ ์ผ์ด๋๋ค. 2. ์ปดํ์ผ๋ฌ๊ฐ ์ฐธ์กฐ ์ถ์ฝ ๋ฌธ๋งฅ์์ ์ฐธ์กฐ์ ๋ํ ์ฐธ์กฐ๋ฅผ ๋ง๋ค์ด๋ด๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ ํ๋์ ์ฐธ์กฐ๊ฐ ๋๋ค. ์๋์ ๋ ์ฐธ์กฐ ์ค ํ๋๋ผ๋ ์ผ๊ฐ ์ฐธ์กฐ์ด๋ฉด ๊ฒฐ๊ณผ๋ ์ผ๊ฐ ์ฐธ์กฐ์ด๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์ค๋ฅธ๊ฐ ์ฐธ์กฐ์ด๋ค. 3. ํ์ ์ฐ์ญ์ด ์ผ๊ฐ๊ณผ ์ค๋ฅธ๊ฐ์ ๊ตฌ๋ถํ๋ ๋ฌธ๋งฅ๊ณผ ์ฐธ์กฐ ์ถ์ฝ์ด ์ผ์ด๋๋ ๋ฌธ๋งฅ์์ ๋ณดํธ ์ฐธ์กฐ๋ ์ค๋ฅธ๊ฐ ์ฐธ์กฐ์ด๋ค. ์ฐ๋ฆฌ๋ T&& ๊ฐ์..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dP3ZuR/btrPyuyaPfd/g39qRlXaagAVX8Ku145ieK/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 27 : ๋ณดํธ ์ฐธ์กฐ์ ๋ํ ์ค๋ณต์ ์ฌ ๋์ ์ฌ์ฉํ ์ ์๋ ๊ธฐ๋ฒ๋ค์ ์์ ๋๋ผ ํต์ฌ : 1. ๋ณดํธ ์ฐธ์กฐ์ ์ค๋ณต์ ์ฌ์ ์กฐํฉ์ ๋ํ ๋์์ผ๋ก๋ ๊ตฌ๋ณ๋๋ ํจ์ ์ด๋ฆ ์ฌ์ฉ, ๋งค๊ฐ๋ณ์๋ฅผ const ์ ๋ํ ์ผ๊ฐ ์ฐธ์กฐ๋ก ์ ๋ฌ, ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ผ๋ก ์ ๋ฌ, ๊ผฌ๋ฆฌํ ๋ฐฐ๋ถ ์ฌ์ฉ ๋ฑ์ด ์๋ค. 2. std::enable_if ๋ฅผ ์ด์ฉํด์ ํ ํ๋ฆฟ์ ์ธ์คํด์คํ๋ฅผ ์ ํํจ์ผ๋ก์จ ๋ณดํธ ์ฐธ์กฐ์ ์ค๋ณต์ ์ฌ๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค. std::enable_if ๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ณดํธ ์ฐธ์กฐ ์ค๋ณต์ ์ฌ๋ฅผ ์ฌ์ฉํ๋ ์กฐ๊ฑด์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ ์ดํ๋ ์ฉ๋๋ก ์ฐ์ธ๋ค. 3. ๋ณดํธ ์ฐธ์กฐ ๋งค๊ฐ๋ณ์..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dJZHHb/btrPw0EusIo/M1vAbnu2aKYIIIA1UOB4xk/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 26 : ๋ณดํธ ์ฐธ์กฐ์ ๋ํ ์ค๋ณต์ ์ฌ๋ฅผ ํผํ๋ผ ํต์ฌ : 1. ๋ณดํธ ์ฐธ์กฐ์ ๋ํ ์ค๋ณต์ ์ฌ๋ ๊ฑฐ์ ํญ์ ๋ณดํธ ์ฐธ์กฐ ์ค๋ณต์ ์ฌ ๋ฒ์ ์ด ์์๋ณด๋ค ์์ฃผ ํธ์ถ๋๋ ์ํฉ์ผ๋ก ์ด์ด์ง๋ค. 2. ์๋ฒฝ ์ ๋ฌ ์์ฑ์๋ค์ ํนํ๋ ๋ฌธ์ ๊ฐ ๋ง๋ค. ๊ทธ๋ฐ ์์ฑ์๋ ๋์ฒด๋ก ๋นconst ์ผ๊ฐ์ ๋ํ ๋ณต์ฌ ์์ฑ์๋ณด๋ค ๋ ๋์ ๋ถํฉ์ด๋ฉฐ, ๊ธฐ๋ฐ ํด๋์ค ๋ณต์ฌ ๋ฐ ์ด๋ ์์ฑ์๋ค์ ๋ํ ํ์ ํด๋์ค๋ค์ ํธ์ถ๋ค์ ๊ฐ๋ก์ฑ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์. std::multiset names; void logAndAdd(const std::string& name) ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/elDe2B/btrPB2fLBdn/FSxnMgoezKz4z3Q3C00JH0/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 25 : ์ค๋ฅธ๊ฐ ์ฐธ์กฐ์๋ std::move ๋ฅผ, ๋ณดํธ ์ฐธ์กฐ์๋ std::forward ๋ฅผ ์ฌ์ฉํ๋ผ ํต์ฌ : 1. ์ค๋ฅธ๊ฐ ์ฐธ์กฐ๋ ๋ณดํธ ์ฐธ์กฐ๊ฐ ๋ง์ง๋ง์ผ๋ก ์ฐ์ด๋ ์ง์ ์์, ์ค๋ฅธ๊ฐ ์ฐธ์กฐ์๋ std::move ๋ฅผ, ๋ณดํธ ์ฐธ์กฐ์๋ std::forward ๋ฅผ ์ ์ฉํ๋ผ. 2. ๊ฒฐ๊ณผ๋ฅผ ๊ฐ ์ ๋ฌ ๋ฐฉ์์ผ๋ก ๋๋ ค์ฃผ๋ ํจ์๊ฐ ์ค๋ฅธ๊ฐ ์ฐธ์กฐ๋ ๋ณดํธ ์ฐธ์กฐ๋ฅผ ๋๋ ค์ค ๋์๋ ๊ฐ๊ฐ std::move ๋ std::forward ๋ฅผ ์ ์ฉํ๋ผ. 3. ๋ฐํ๊ฐ ์ต์ ํ์ ๋์์ด ๋ ์ ์๋ ์ง์ญ ๊ฐ์ฒด์๋ ์ ๋๋ก std::move ๋ std::forward ๋ฅผ ์ ์ฉํ์ง ๋ง์์ผ ํ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tzD0X/btrPyVB4zC0/gaBB9IDqmzZM88FqGC5d6k/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 24 : ๋ณดํธ ์ฐธ์กฐ์ ์ค๋ฅธ๊ฐ ์ฐธ์กฐ๋ฅผ ๊ตฌ๋ณํ๋ผ ํต์ฌ : 1. ํจ์ ํ ํ๋ฆฟ ๋งค๊ฐ๋ณ์์ ํ์์ด T&& ํํ์ด๊ณ T ๊ฐ ์ฐ์ญ๋๋ค๋ฉด, ๋๋ ๊ฐ์ฒด๋ฅผ auto&& ๋ก ์ ์ธํ๋ค๋ฉด, ๊ทธ ๋งค๊ฐ๋ณ์๋ ๊ฐ์ฒด๋ ๋ณดํธ ์ฐธ์กฐ์ด๋ค. 2. ํ์ ์ ์ธ์ ํํ๊ฐ ์ ํํ ํ์&& ๊ฐ ์๋๋ฉด, ๋๋ ํ์ ์ฐ์ญ์ด ์ผ์ด๋์ง ์์ผ๋ฉด, ํ์&& ๋ ์ค๋ฅธ๊ฐ ์ฐธ์กฐ๋ฅผ ๋ปํ๋ค. 3. ์ค๋ฅธ๊ฐ์ผ๋ก ์ด๊ธฐํ๋๋ ๋ณดํธ ์ฐธ์กฐ๋ ์ค๋ฅธ๊ฐ ์ฐธ์กฐ์ ํด๋นํ๋ค. ์ผ๊ฐ์ผ๋ก ์ด๊ธฐํ๋๋ ๋ณดํธ ์ฐธ์กฐ๋ ์ผ๊ฐ ์ฐธ์กฐ์ ํด๋นํ๋ค. "T&&" ๋ ์ค๋ฅธ๊ฐ ์ฐธ์กฐ ๋๋ ์ผ๊ฐ ์ฐธ์กฐ ์ค ํ๋๋ผ๋ ๋ป์ด๋ค. ์ด๋ฌํ ์ฐธ์กฐ๋ฅผ ๋ณดํธ ์ฐธ์กฐ(u..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/p8W7p/btrPzAEjFUd/LOgU676UM9OOty3K9Ajit1/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 23 : std::move ์ std::forward ๋ฅผ ์์งํ๋ผ ํต์ฌ : 1. std::move ๋ ์ค๋ฅธ๊ฐ์ผ๋ก์ ๋ฌด์กฐ๊ฑด ์บ์คํ ์ ์ํํ๋ค. std::move ์์ฒด๋ ์๋ฌด๊ฒ๋ ์ด๋ํ์ง ์๋๋ค. 2. std::forward ๋ ์ฃผ์ด์ง ์ธ์๊ฐ ์ค๋ฅธ๊ฐ์ ๋ฌถ์ธ ๊ฒฝ์ฐ์๋ง ๊ทธ๊ฒ์ ์ค๋ฅธ๊ฐ์ผ๋ก ์บ์คํ ํ๋ค. 3. std::move ์ std::forward ๋ ๋ค, ์คํ ์์ ์์๋ ์๋ฌด ์ผ๋ ํ์ง ์๋๋ค. std::move ์ std::forward ๋ ์คํ ๊ฐ๋ฅ ์ฝ๋๋ฅผ ํ ๋ฐ์ดํธ๋ ์ฐ์ถํ์ง ์๋๋ค. ๊ทธ๋ค์ ๊ทธ๋ฅ ์บ์คํ ์ ์ํํ๋ ํจ์(๊ตฌ์ฒด์ ์ผ๋ก๋ ํจ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bzh6fA/btrPzMdv9ws/UTHvmWPR8SpPqOq2IekSHk/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 22 : Pimpl ๊ด์ฉ๊ตฌ๋ฅผ ์ฌ์ฉํ ๋์๋ ํน์ ๋ฉค๋ฒ ํจ์๋ค์ ๊ตฌํ ํ์ผ์์ ์ ์ํ๋ผ ํต์ฌ : 1. Pimpl ๊ด์ฉ๊ตฌ๋ ํด๋์ค ๊ตฌํ๊ณผ ํด๋์ค ํด๋ผ์ด์ธํธ ์ฌ์ด์ ์ปดํ์ผ ์์กด์ฑ์ ์ค์์ผ๋ก์จ ๋น๋ ์๊ฐ์ ๊ฐ์ํ๋ค. 2. std::unique_ptr ํ์์ pImpl ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ๋์๋ ํน์ ๋ฉค๋ฒ ํจ์๋ค์ ํด๋์ค ํค๋์ ์ ์ธํ๊ณ ๊ตฌํ ํ์ผ์์ ๊ตฌํํด์ผ ํ๋ค. ์ปดํ์ผ๋ฌ๊ฐ ๊ธฐ๋ณธ์ผ๋ก ์์ฑํ๋ ํจ์ ๊ตฌํ๋ค์ด ์ฌ์ฉํ๊ธฐ์ ์ ํฉํ ๊ฒฝ์ฐ์๋ ๊ทธ๋ ๊ฒ ํด์ผ ํ๋ค. 3. ์์ ์กฐ์ธ์ std::unique_ptr ์ ์ ์ฉ๋ ๋ฟ, std::shared_ptr ์..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/9ajsw/btrPukW1hiG/fcxRFVx4cBZYSQvYSOJzdK/img.png)
C++ ํ๋ก๊ทธ๋๋จธ์ ํ๋ ์์ด์ ๋ฐ์ด๋ธ์ธ, ์ค์ฝง ๋ง์ด์ด์ค์ Modern Effective C++ ๋ฅผ ์ฝ๊ณ ๊ธฐ์ตํ ๋ด์ฉ์ ์์ฝํ๊ณ ์์ต๋๋ค. ๊ผญ ์ฝ์ด๋ณด์๊ธธ ์ถ์ฒ๋๋ฆฝ๋๋ค! ํญ๋ชฉ 21 : new ๋ฅผ ์ง์ ์ฌ์ฉํ๋ ๊ฒ๋ณด๋ค std::make_unique ์ std::make_shared ๋ฅผ ์ ํธํ๋ผ ํต์ฌ : 1. new ์ ์ง์ ์ฌ์ฉ์ ๋นํด, make ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์์ค ์ฝ๋ ์ค๋ณต์ ์ฌ์ง๊ฐ ์์ด์ง๊ณ , ์์ธ ์์ ์ฑ์ด ํฅ์๋๊ณ , std::make_shared ์ std::allocate_shared ์ ๊ฒฝ์ฐ ๋ ์๊ณ ๋น ๋ฅธ ์ฝ๋๊ฐ ์ฐ์ถ๋๋ค. 2. make ํจ์์ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅ ๋๋ ๋ถ์ ํฉํ ๊ฒฝ์ฐ๋ก๋ ์ปค์คํ ์ญ์ ์๋ฅผ ์ง์ ํด์ผ ํ๋ ๊ฒฝ์ฐ์ ์ค๊ดํธ ์ด๊ธฐ์น๋ฅผ ์ ๋ฌํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. 3. std::shared_ptr ์ ..