Friend๋ private ํด๋์ค ๋ฉค๋ฒ์ ์ ๊ทผ๊ถํ์ด ์๋ ํจ์ ๋๋ ํด๋์ค์
๋๋ค. ์ฌ๊ธฐ์ ํด๋น ํจ์ ๋๋ ํด๋์ค๋ ์ ๊ทผํ๊ณ ์ ํ๋ ํด๋์ค์ ๋ฉค๋ฒ๊ฐ ์๋๋๋ค. (์ ๊ทผํ๊ณ ์ ํ๋ ํด๋์ค์ ์์ฑ ๋๋ ๋ฉ์๋๊ฐ ์๋๋๋ค.) ํจ์์ ๊ฒฝ์ฐ, ์ผ๋ฐ์ ์ธ ํจ์ ์ผ ์๋ ์๊ณ , ํน์ ๋ค๋ฅธ ํด๋์ค์ ๋ฉค๋ฒ ๋ฉ์๋์ผ ์ ์์ต๋๋ค. ํด๋์ค์ผ ๊ฒฝ์ฐ, ์ ๊ทผํ๊ณ ์ ํ๋ ํด๋์ค์ ๋ชจ๋ private ๋ฉค๋ฒ๋ค์ ๋ํ ์ ๊ทผ ๊ถํ์ด ์๋ ํด๋์ค์
๋๋ค. ํ๋ง๋๋ก, friend๋ ํด๋์ค์ ๋ชจ๋ ๋ฐ์ดํฐ์ ์ ๊ทผ ๊ถํ์ ๊ฐ์ง, ํด๋์ค ๋ฉค๋ฒ๊ฐ ์๋ ์ธ๋ถ ํจ์ ๋๋ ํด๋์ค์
๋๋ค. friend ๊ด๊ณ๋ friend ํค์๋๋ฅผ ์ฌ์ฉํด์ ํจ์ ๋๋ ํด๋์ค์ ์ ์๋ฅผ ํ ๋ ๋ช
์ํด์ผ ํฉ๋๋ค. ๋ํ, friend ๊ด๊ณ๋ ์๋ฐฉํฅ์ฑ์ด ์์ต๋๋ค. A๊ฐ B์ friend๋ผ๊ณ ..
OOP
C++์์๋ ํด๋์ค์๋ ์์ (const) ๊ฐ๋
์ ์ ์ฉํ ์ ์์ต๋๋ค. const๊ฐ ์ ์ฉ๋ ํด๋์ค๋ ์์ฑ(attribute)๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์์ฑ์ ๋ฉค๋ฒ ํจ์๋ฅผ ํธ์ถํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? const Player villain {"Villain", 100, 55}; villain.set_name("Thanos");// COMPILER ERROR std::cout
C++ Class ์ Copy Constructor์๋ default copy constructor์ด ์ฌ์ฉํ๋ Shallow Copying๊ณผ Deep Copying์ด ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก๋ ์์ ๋ณต์ฌ, shallow copying์ ์ฌ์ฉํด๋ ๊ด์ฐฎ์ง๋ง, ์์ ๋ณต์ฌ๊ฐ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐํ ๋๊ฐ ์์ต๋๋ค. ์ด๋ฒ ํฌ์คํธ์์๋ ๊ฐ๊ฐ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. Shallow Copying - ์์ ๋ณต์ฌ Shallow copy๋ ์ปดํ์ผ๋ฌ๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ฑํด์ฃผ๋ default copy constructor๊ฐ ํํ๋ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํฉ๋๋ค. Shallow copying์ ๋ณต์ฌ ๋์์ ๊ฐ์ฒด์ ๋ชจ๋ ์์ฑ์ ์ง๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค. ์ฌ๊ธฐ์ ์ฃผ์ํด์ผ ํ ์ ์ ํฌ์ธํฐ๊ฐ ๊ฐ์ฒด์์ ์ฌ์ฉ๋ ๋ ์
๋๋ค. ๋ณต์ฌ์ ๊ณผ์ ์์ ํฌ์ธํฐ๋ ๋ณต์ฌ๋์ง๋ง, ..
๊ฐ์ฒด๋ ๊ฝค๋ ํฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๊ตฌํ๊ธฐ ๋๋ฌธ์, 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..