C++์์๋ ํด๋์ค์๋ ์์ (const) ๊ฐ๋
์ ์ ์ฉํ ์ ์์ต๋๋ค. const๊ฐ ์ ์ฉ๋ ํด๋์ค๋ ์์ฑ(attribute)๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์์ฑ์ ๋ฉค๋ฒ ํจ์๋ฅผ ํธ์ถํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? const Player villain {"Villain", 100, 55}; villain.set_name("Thanos");// COMPILER ERROR std::cout
์ ์ฒด ๊ธ
Python, C++, Data Science ๊ณต๋ถ ๋ธ๋ก๊ทธ ์ ๋๋ค.this ํฌ์ธํฐ๋ ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ ๊ฐ์ง๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ *this ๋ก ์ ๊ทผํ๋ฉด ํด๋น ๊ฐ์ฒด์ ์ฃผ์ ๊ฐ์ ๋ํ๋
๋๋ค. ์ด๋ ํด๋์ค ๋ฒ์ ๋ด์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. (ํ์ด์ฌ์ ๊ณต๋ถํด๋ณด์
จ๋ค๋ฉด self ํค์๋๋ฅผ ์๊ฐํ์๋ฉด ์ดํด๊ฐ ๋น ๋ฅผ ๊ฒ ๊ฐ์ต๋๋ค.) ์์๋ฅผ ๋ณด๊ฒ ์ต๋๋ค. void Account::set_balance(double balance){ this->balance = balance; } ์
๋ ฅ ์ธ์๋ฅผ balance_input ์ ๊ฐ์ด ์ค์ ํ๊ณ balance = balance_input ์ผ๋ก ํด๋ ๋์ง๋ง, ์์๊ฐ์ด ๊ฐ์ฒด ์ค์ค๋ก์ balance๋ฅผ this๋ก ํ๊ธฐํ์ฌ ๊ตฌ๋ถํ๋ ๋ฐฉ๋ฒ๋ ์ ์ฉํฉ๋๋ค.
INTRO int total {0}; total = 100 + 200; ์ ์ฝ๋์์ total์ ํฌ์ธํฐ๋ก ์ ๊ทผํ ์ ์๋ ๋ณ์ ๊ฐ, L-Value์
๋๋ค. ๊ทธ๋ฆฌ๊ณ total์ ํ ๋น๋๋ 100+200 ์์์ ํฌ์ธํฐ๋ก ์ ๊ทผํ ์ ์๋ R-Value์
๋๋ค. C++์์ ์ด๋ฐ ๊ฐ๋ค์ ์ด๋ฆ์๋ temp value๋ก ์ผ์์ ์ผ๋ก ์ ์ฅ๋์๋ค๊ฐ, total๊ณผ ๊ฐ์ ๊ฐ์ ๋ณต์ฌ ์ ์ฅ๋๊ณ ๋ ๋ค ์ ๊ฑฐ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ์ผ์ด temp value๋ฅผ temp object๋ก๋ง ๋ฐ๋์ด์ ๊ฐ์ฒด์์๋ ๋ฐ์ํฉ๋๋ค. ๋ณต์ฌ ์์ฑ์๋ฅผ ์๊ฐํ์๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฐ๋ฐ, ๋ณต์ฌ ์์ฑ์๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํธ์ถํ๊ฒ ๋๋ฉด temporary object๊ฐ ๊ทธ๋งํผ ๋ง์ด ์์ฑ๋ฉ๋๋ค. ๋ฐ๋ฉด ๊ฐ์ฒด๋ ์๋์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์๊ตฌํฉ๋๋ค. Deep copy๋ฅผ ํํ๋ฉด ๋์ฑ ๋ง์ด ์..
C++ Class ์ Copy Constructor์๋ default copy constructor์ด ์ฌ์ฉํ๋ Shallow Copying๊ณผ Deep Copying์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ ์์ ๋ณต์ฌ, shallow copying์ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ง๋ง, ์์ ๋ณต์ฌ๊ฐ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ๋๊ฐ ์์ต๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ ๊ฐ๊ฐ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. Shallow Copying - ์์ ๋ณต์ฌ Shallow copy๋ ์ปดํ์ผ๋ฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑํด์ฃผ๋ default copy constructor๊ฐ ํํ๋ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค. Shallow copying์ ๋ณต์ฌ ๋์์ ๊ฐ์ฒด์ ๋ชจ๋ ์์ฑ์ ์ง๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ ์ ํฌ์ธํฐ๊ฐ ๊ฐ์ฒด์์ ์ฌ์ฉ๋ ๋ ์
๋๋ค. ๋ณต์ฌ์ ๊ณผ์ ์์ ํฌ์ธํฐ๋ ๋ณต์ฌ๋์ง๋ง, ..