์ ๋ฒ ํฌ์คํธ์์ ๋ค๋ฃฌ ๋ณต์ฌ ๋ฐฉ์์ ๋์
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ l-value์ ๋ํด์ ์๋ํฉ๋๋ค. ์ด๋ฒ ํฌ์คํธ์์ ๋ค๋ฃฐ ์ด๋ ๋์
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ r-value๋ฅผ ๋ค๋ฃน๋๋ค. ๋ค์ ์ฝ๋ ์กฐ๊ฐ์ ์ดํด๋ด
์๋ค. Mystring s1; s1 = Mystring{"Ricky"};// Move Assignment ์ฌ๊ธฐ์ empty string์ ๋ด๋ Mystring ๊ฐ์ฒด s1์ ์ ์ธํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ s1์ Mystring{"Ricky"}๋ฅผ ํตํด์ Ricky๋ผ๋ ๋ฌธ์์ด์ ์์ฑ์ผ๋ก ์ง๋ Mystring ๊ฐ์ฒด๋ฅผ ํ ๋นํ์ต๋๋ค. ์ฌ๊ธฐ์ ์ค์ํ ์ ์, s1์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด์ ์๋ก์ด ์ด๋ฆ ์๋ ์์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ๊ฐ์ s1์ ์ ์ฅ์ ํ ๋ค์ ์์ ๊ฐ์ฒด๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ด๊ฒ์ด r-value ๊ฐ์ฒด์
๋๋ค. ํ์ง๋ง ์์๋ค์ํผ ์ด๋ฐ..
C++/๊ธฐํ
C++์์๋, ํ ๊ฐ์ฒด์์ ๋ค๋ฅธ ๊ฐ์ฒด๋ก์ ๋์
์ฐ์ฐ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. Mystring s1 {"Frank"}; Mystring s2 = s1;// NOT Assingment // Same as Mystring s2 {s1}; s2 = s1// Assignment C++ ์ปดํ์ผ๋ฌ๋ ๊ธฐ๋ณธ ๋์
์ฐ์ฐ์๋ฅผ ์์ฑํฉ๋๋ค. ์ด๋ ์์ ๋ณต์ฌ(shallow copy / memberwise assignment) ์
๋๋ค. ๋ง์ฝ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ํด๋์ค์ ์์ฑ ์ค raw pointer๋ฅผ ์ฌ์ฉํ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๊น์ ๋ณต์ฌ(deep copy)๋ฅผ ํด์ผํฉ๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ c-style string๊ฐ์ ํฌ์ธํฐ๋ฅผ ์์ฑ์ผ๋ก ์ง๋๋ Mystring ํด๋์ค๋ฅผ ๋ค๋ค๋ณด๊ฒ ์ต๋๋ค. class Mystring { private: char *st..
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ด๋? C++ ์์ ์ฐ๋ฆฌ๋ ์ฌ๋ฌ๊ฐ์ง ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์์ต๋๋ค. ๋ํ๊ธฐ(+), ๋นผ๊ธฐ(-), ๋๋๊ธฐ(/), ๊ณฑํ๊ธฐ(*)๊ฐ ๋ํ์ ์
๋๋ค. ์ฌ์ค ์ด๋ฌํ ์ฐ์ฐ์๋ค๋ ์ด๋ฏธ ์ค๋ฒ๋ก๋ฉ์ด ๋์ด ์๋ ํํ์
๋๋ค. ์ค๋ฒ๋ก๋ฉ์ด ํ ํจ์๊ฐ ์ฌ๋ฌ ๋ค๋ฅธ ์๋ฃํ ๊ฐ์ ์ฒ๋ฆฌํ ์ ์๊ฒ ๋ฐ๋ณต์ ์ผ๋ก ์ ์ธํ๋ ๊ฒ์ด์์ฃ ? ์์ ์ผ๋ฐ์ ์ฐ์ฐ์๋ค๋ integer, double, float ๋ฑ์ ์๋ฃํ์ ๋ชจ๋ ๋ค๋ฃฐ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ๋ค์ ๋์์์ ์ด๋ฌํ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๊ฒ ๋ ๋์๋, ์ฃผ๋ก user defined type๋ค์ built-in type๋ค๊ณผ ๋น์ทํ๊ฒ ํ๋ํ ์ ์๊ฒ ํ๋ ๋ชฉ์ ์
๋๋ค. ๋ํ ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ผ ์๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ์ปดํ์ผ๋ฌ์์ ์๋์ ์ผ๋ก ํํด์ง์ง ์์ต๋๋ค. ํ ๊ฐ์ง ์ข
..
cin.ignore()์ ์
๋ ฅ ๋ฒํผ๋ฅผ ๋น์ฐ๋ ์ญํ ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, cin์ผ๋ก 1000 5000์ ๋ฐ์์ ๋ ๋ค์ cin์ ์
๋ ฅ์ ํ์ง๋ ์์๋๋ฐ 5000 ๋ค์ด๊ฐ๋๋ค. ๋ฒํผ์ 5000 ๊ฐ์ด ๋จ์์๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ด ๋ cin.ignore()์ผ๋ก ๋ฒํผ๋ฅผ ๋น์ฐ๊ณ ๋์ ๋ค์ ์
๋ ฅ์ ๋ฐ์ผ๋ฉด ์ด๋ฐ ํ์์ด ๋ฐฉ์ง๋ฉ๋๋ค.