์ง๋ฌธ
1. C++์ ์ฑ๊ธํด์์ ๋ฐ๋์ ๋ ํผ๋ฐ์คorํฌ์ธํฐ ์จ์ผ ํ๋ ์ด์
2. C#์ static instance์ ์ด๊ธฐํ ์์๋ C++์ฒ๋ผ ๋ณด์ฅ๋์ง ์๋์ง?
C#์์ ์ฑ๊ธํด์ ์ฌ์ฉํ ๋๋
public class FileSystem
{
private static FileSystem instance = null;
ย ย ย
ย ย public FileSystem GetInstance()
ย ย {
if(instance == null)
ย ย ย ย instance = this;
ย ย ย ย ย
ย ย ย ย return instnace;
ย ย }
}
์ด๋ฐ์์ผ๋ก GetInstance๊ฐ ํด๋น ํด๋์ค ํ์ ์ ์ธ์คํด์ค๋ฅผ ๋ฐํํจ.
๊ทธ๋ฐ๋ฐ C++์ ์ฑ๊ธํด์์๋
class FileSystem
{
public:
static FileSystem& instance()
{
ย ย static FileSystem instance_;
return instance_;
}
ย ย ย
private:
FileSystem() {}
~FileSystem() {}
};
์ด๋ฐ์์ผ๋ก ์ฐธ์กฐ์(orํฌ์ธํฐ)ํ์์ผ๋ก ๋ฐํํด์ผ ํ๋๋ฐ
์ผ์ถ ์ฐพ์๋ณธ ๋ฐ๋ก๋ static instance์ ์ด๊ธฐํ ์์๋ฅผ ๋ณด์ฅํ์ง ์์์๋ผ๋๋ฐ
์ด๊ฒ ๋ง๋์ง, ๋ง๋ค๋ฉด ์ข ๋ ๋ํ ์ผํ ์ค๋ช ์ด ๊ถ๊ธํจ
๊ทธ๋ฆฌ๊ณ C#๋ C++์ฒ๋ผ static instance์ ์ด๊ธฐํ ์์๋ฅผ ๋ณด์ฅ์ํจ? ์ด๋ ๋ท๋ท๊ณ ์ ํํ์ด์ง์์๋ C#์ ๋ณด์ฅํ๋ค๋๋ฐ(์ ์ธ์์)
๋ฐํ์ด๋ ์ด๊ธฐํ ์์๋์ ๋ฑํ ์๊ด์์ง์๋ ์ถ์๋ฐ ๋ฐํ์ผ๋ก ๋ ํผ๋ฐ์ค๋ ํฌ์ธํฐ๋ฅผ ๋์ง๋ ์ด์ ๋ ๋ณต์ฌ๋์ง์์ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ์ ๋ฌํ๊ธฐ ์ํด์์
ใ ใ ๊ทธ๊ฑด ์๋๋ฐ, C#์ฒ๋ผ ์๋ณธ ๊ฐ์ฒด ์์ฒด๋ฅผ ๋ฐํํ๋ ์์ผ๋ก ์ง๋ฉด ์ปดํ์ผ ์๋ฌ๊ฐ ๋๋๋ผ๊ณ . ๋จ์ํ๊ฒ Call by refrence๋ฅผ ์ํด์(์ฆ, ๊ฐ์ฒด ๋ณต์ฌ๋ฅผ ๋ง๊ธฐ ์ํด) ๊ธ์งํ๋ค << ์ด๊ฒ ๋ช ํํ ์ด์ ์ธ๊ฑฐ์?
์ปดํ์ผ ์๋ฌ๊น์ง๋ ์ฝ๋๋ฅผ ๋ณธ๊ฒ ์๋๋ผ์ ๋ชจ๋ฅด๊ฒ ๋ค. Call by reference๋ ํจ์๋ฅผ ํธ์ถํ ๋์ ์๊ธฐ๊ณ ์๋ ํจ์์์ ๋ฐํ๋๋ ๊ฐ ์๊ธฐ๋๊น ์ข ๋ค๋ฅธ ๊ฐ๋ ์ธ๋ฐ, ๋์ถฉ ๋น์ทํ๊ธด ํจ. ์ฑ๊ธํค์ผ๋ก ๋ง๋ค์๋ค๋๊ฑฐ ์์ฒด๊ฐ ๋จ์ผ ๊ฐ์ฒด๋ฅผ ์ ์ญ์์ ์ฌ์ฉํ๊ธฐ ์ํ ๋ชฉ์ ์ธ๊ฑฐ๋๊น
์ ใ ใ ใ ๋ง์ ์ด์ํ๊ฒํ๋ค ํ๊ณ ์ถ์๋๋ง์ ๊ฒฐ๊ตญ ์ธํ์ด๋ ์์ํ์ด๋ ์ฃผ๊ณ ๋ฐ์ ๋์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๋ฅผ ๋ง๊ธฐ์ํ ๋ญ ๊ทธ๋ฐใ ใ
c#์์ ๋ชจ๋ ํด๋์ค์ ๊ฐ์ฒด๋ ์ฐธ์กฐํ์์ผํ ๋ฐ ๊ทธ๋์ ์ return ๋ ๊ทธ๋ฅ Instance์ ์ฐธ์กฐ๋ฅผ ์ฃผ๋ ๊ฑฐ์ผ๊ป? c++ : &Instance == c# : Instance ๋ฌผ์ด๋ณธ๊ฒ ์ด๊ฒ ๋ง๋์ง๋ ๋ชจ๋ฅด๊ฒ ๋ค
Call by Value / Call by Reference ๊ฒ์ ใฑ