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++/๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ (OOP)
C++ Class ์ Copy Constructor์๋ default copy constructor์ด ์ฌ์ฉํ๋ Shallow Copying๊ณผ Deep Copying์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ ์์ ๋ณต์ฌ, shallow copying์ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ง๋ง, ์์ ๋ณต์ฌ๊ฐ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ๋๊ฐ ์์ต๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ ๊ฐ๊ฐ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. Shallow Copying - ์์ ๋ณต์ฌ Shallow copy๋ ์ปดํ์ผ๋ฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑํด์ฃผ๋ default copy constructor๊ฐ ํํ๋ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค. Shallow copying์ ๋ณต์ฌ ๋์์ ๊ฐ์ฒด์ ๋ชจ๋ ์์ฑ์ ์ง๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ ์ ํฌ์ธํฐ๊ฐ ๊ฐ์ฒด์์ ์ฌ์ฉ๋ ๋ ์
๋๋ค. ๋ณต์ฌ์ ๊ณผ์ ์์ ํฌ์ธํฐ๋ ๋ณต์ฌ๋์ง๋ง, ..
ํด๋์ค๋ฅผ ์ ์ธํ ๋, ๋ด๋ถ์์ public: ํค์๋๋ฅผ ์์ฑํ์ง ์์ผ๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋จ๋ ๊ฒฝํ์ด ์์ ๊ฒ๋๋ค. ์ด๊ฒ์ ํด๋์ค์์ ๋งค์ฐ ์ค์ํ ์ ๊ทผ ์ ํ์(Access Modifier) ๋ผ๋ ๊ฐ๋
์ ํด๋นํฉ๋๋ค. C++ ์ ๊ทผ ์ ํ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก 3๊ฐ์ง์ ์ ๊ทผ ์ ํ์๊ฐ ์กด์ฌํฉ๋๋ค. ๊ฐ๊ฐ public, private, protcted ์
๋๋ค. public ์ ๊ทผ ์ ํ์๋ ์ฝ๋ ๋ด์ ๋ชจ๋ ๊ณณ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค. private ์ ๊ทผ ์ ํ์๋ ๋ค๋ฅธ ํด๋์ค ๋ฉค๋ฒ๋ค์ด๋ friend๋ค์๊ฒ๋ง ์ ๊ทผ์ด ๊ฐ๋ฅํฉ๋๋ค. protected ์ ๊ทผ ์ ํ์๋ ์์(inheritance)์ ํจ๊ป ์ฌ์ฉ๋๋ ์ ๊ทผ ์ ํ์์
๋๋ค. syntax๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. class Class_Name{ public: // private: // prote..
๊ฐ์ฒด๋ ๊ฝค๋ ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌํ๊ธฐ ๋๋ฌธ์, Pass by value ๋ฐฉ๋ฒ ํน์ return ๊ฐ์ผ๋ก ํน์ ๊ฐ์ฒด๋ฅผ ํ์ฉํ๋ ํจ์๋ ๋ฉ์๋๋ ํฐ ์ฉ๋์ ๋ญ๋นํ๊ฒ ๋ฉ๋๋ค. ์ด๋ด ๋, pass by reference ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ด๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. // main.cpp #include "Practice.h" #include using namespace std; int main() { Player ricky("Ricky", 100, 0); Player super_enemy = create_super_enemy(); Player ricky2 = another_hero(ricky); return 0; } // Practice.cpp #include "Practice.h" #include #include us..