ํด๋์ค ๋ฉค๋ฒ๋ค๋ static ๊ฐ๋
์ ์ ๋ชฉํ ์ ์์ต๋๋ค. ํ๋ก๊ทธ๋จ ๋ด์์ ํ ํด๋์ค์ ๋ํด์ ํ์ฌ ์กด์ฌํ๋ ์ด ๊ฐ์ฒด์ ์๋ฅผ ์ป๊ณ ์ถ์๋์ ๊ฐ์ ์ํฉ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. int Player::get_num_players() { return num_players;// num_players๋ Player ํด๋์ค ๋ด์ static ์ ์ } ํค๋ ํ์ผ์์ ํด๋์ค๋ฅผ ์ ์ธํ๊ณ , ํน์ attribute๋ฅผ static ํค์๋๋ฅผ ๋ถ์ฌ์ ์ ์ธํฉ๋๋ค. ํ์ง๋ง ์ฃผ์ํด์ผ ํ ์ ์ ํด๋น ์์ฑ์ ๋ํ ์ด๊ธฐํ๋ .cpp ํ์ผ์์ ํํฉ๋๋ค. ํด๋์ค์ ์ ์ ๋ด์์ ๋ฐ๋ก ์ด๊ธฐํ๋ฅผ ํ๋ฉด ์๋ฉ๋๋ค. // Static class members // main.cpp #include #include "Player.h" using namespa..
C++
C++์์๋ ํด๋์ค์๋ ์์ (const) ๊ฐ๋
์ ์ ์ฉํ ์ ์์ต๋๋ค. const๊ฐ ์ ์ฉ๋ ํด๋์ค๋ ์์ฑ(attribute)๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์์ฑ์ ๋ฉค๋ฒ ํจ์๋ฅผ ํธ์ถํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? const Player villain {"Villain", 100, 55}; villain.set_name("Thanos");// COMPILER ERROR std::cout
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๋ฅผ ํํ๋ฉด ๋์ฑ ๋ง์ด ์..