์ ๋ฒ ํฌ์คํธ์์ ๋ค๋ฃฌ ๋ณต์ฌ ๋ฐฉ์์ ๋์
์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ 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++์์๋, ํ ๊ฐ์ฒด์์ ๋ค๋ฅธ ๊ฐ์ฒด๋ก์ ๋์
์ฐ์ฐ์ ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. 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๋ค๊ณผ ๋น์ทํ๊ฒ ํ๋ํ ์ ์๊ฒ ํ๋ ๋ชฉ์ ์
๋๋ค. ๋ํ ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ผ ์๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ์ฐ์ฐ์ ์ค๋ฒ๋ก๋ฉ์ ์ปดํ์ผ๋ฌ์์ ์๋์ ์ผ๋ก ํํด์ง์ง ์์ต๋๋ค. ํ ๊ฐ์ง ์ข
..
transform ํจ์๋ ํค๋์ ๋ค์ด์๋ ํจ์๋ก, ๋ฒกํฐ, ๋ฐฐ์ด, ๋ฌธ์์ด๊ณผ ๊ฐ์ iterate๋ค์ ๋ํด์ ๋ฒ์๋ฅผ ์ง์ ํ์ฌ ํด๋น ๋ฒ์ ๋ด์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ ํจ์๋ฅผ ์ผ๊ด ์ ์ฉ์ํค๋ ์ญํ ์ ํฉ๋๋ค. ์ด 4๊ฐ์ ์ธ์๋ฅผ ๋ฐ๋๋ฐ์, ์์๋๋ก ์๋ฃ๋ค์ ์์ ์ง์ , ๋๋๋ ์ง์ , ๋ณํํ์ฌ ๋ฐํ๋ฐ์ ์ง์ , ๊ทธ๋ฆฌ๊ณ ์ ์ฉํ ํจ์์
๋๋ค. string mystr = "hello everyone"; transform(mystr.begin(), mystr.end(), mystr.begin(), ::toupper); cout