C# ํ๋จผ๋ฐ ๋จผ ์ฑ ์ข ๋ณผ๋ผ๋๊น C++ ๊ธฐ๋ฐ์ผ๋ก ์จ์ง ์ฑ ์ด๋ผ
์๋ ๋ ๋ฐฉ์์ ์ฐจ์ด๋ ๋ ๋ญ์ << ์ด๊ฑด ์ค๋ช ๊ธ ์ฐพ์๊ฑฐ๊ฐ๊ธดํ๋ฐ
class FileSystem
{
public:
static FileSystem& instance()
{
if (instance_ == NULL) instance_ = new FileSystem();
return *instance_;
}
private:
FileSystem() {}
static FileSystem* instance_;
};
class FileSystem
{
public:
static FileSystem*ย instance()
{
if (instance_ == NULL) instance_ = new FileSystem();
return instance_;
}
private:
FileSystem() {}
static FileSystem* instance_;
};
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
ํจ์ ํฌ์ธํฐ์ฒ๋ผ ๋น์ฐํ ํด๋์ค ํฌ์ธํฐ๋ผ๊ณ ํ ์ค; ๊ฐ์ฒดํฌ์ธํฐ๋ค
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
static FileSystem* instance() static FileSystem& instance() FileSystem ํด๋์ค์ ๋ํ ํฌ์ธํฐ
์ฒซ๋ฒ์งธ๋ ๊ฐ์ฒด์ ๋ํ ์๋ณธ์ ์ฐธ์กฐ์ฐ์ฐ์ผ๋ก ๋๊ธฐ๋๊ฑฐ๊ณ , ๋๋ฒ์งธ๋ ๊ฐ์ฒด ์ฃผ์๋ฅผ ํฌ์ธํฐ๋ก ๋๊ธฐ๋๊ฑฐ์
์ฒซ๋ฒ์งธ๋ ์๋ณธ ๊ทธ ์์ฒด๋ฅผ ์ฐธ์กฐํด์ ๋๊ธฐ๋ call by reference๋๊น ๋ณต์ฌ๊ฐ ์ด๋ฃจ์ด์ง์ง ์๋๊ฑฐ๊ณ ๋๋ฒ์งธ๋ ์๋ณธ์ ๋ํ ์ฃผ์๋ฅผ ํฌ์ธํฐ๋ก ๋ณต์ฌํด์ ๋๊ธฐ๋๊ฑฐ๋๊น call by address
ํ ์ฐธ์กฐ์ฐ์ฐ์ผ๋ก ๋๊ธฐ๋ฉด ์ฃผ์๊ฐ ๋ณต์ฌ ์์ผ์ด๋๋๊ฑฐ์์?ใทใท
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ค ์ด๊ฑฐ์๋ค ใณ ๋๋ถ์ ์๊ตฌ๋ ๋ฐฐ์ ๋๊ฑฐ ์๊ฐ๋จ
1ํ๋ ๋ง๋ฅ ์ด๊ฑด ์ฃผ์๊ฐ ๋ฆฌํดํ๊ณ ์ด๊ฑด ํฌ์ธํฐ ๋ฆฌํดํ๊ณ ์ด๊ฑด ๋ฆฌํด๊ฐ์ด ํฌ์ธํฐํ์ ์ด๋ ํ๋ณํ์ด ๋ฐ์ํ๊ณ ์ด๋ฌ๊ณ ์์๋ค
public class FileSystem{ private static FileSystem instance = null; public FileSystem GetInstance() { if(instance == null) instance = this; return instnace; }}์ด๊ฑด C# ์ฑ๊ธํด์ธ๋ฐC++์์ ํฌ์ธํฐ or ๋ ํผ๋ฐ์ค๋ฅผ ์ฐ๋ ์ด์ ๋ ๋ญ์? ๋์ถฉ ๊ตฌ๊ธ๋งํด๋ณด๋ฉด ํ๋ฉ๋ชจ๋ฆฌ๋ ๊ด๋ จ๋๊ฑฐ๊ฐ๋๋ฐ
ํ ์ด์ฉ๊ตฌ๋ ๊ทธ๋ฅ ์ฐพ์์ ๋์จ๊ฑธ ๋งํ๊ฑฐ๊ณ , ๋ด๊ฐ ๋ฌผ์ด๋ณด๋๊ฑด C++์์ ์ฑ๊ธํด์ ์ฌ์ฉํ ๋, ํฌ์ธํฐ or ์ฐธ์กฐ์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ์
๋์ถฉ ์๊ฐํด๋ดค์๋ C#์ฒ๋ผํ๋ฉด ๊ฐ์ฒด ์์ฒด๋ฅผ ์ฃผ๊ณ ๋ฐ์ผ๋ C++์์ ๊ฟ๋ ๋ชป๊ฟ ๋ฐฉ์์ด๊ธด ํ๋ฐ
ํฌ์ธํฐ ๋์ ๋ ํผ๋ฐ์ค๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ ํผ๋ฐ์ค ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์๋๋ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์๋ ๋ ํผ๋ฐ์ค๋ฅผ ์ฌ์ฉํ ์ชฝ์ด ํจ์ฌ ๋ ์ฝ๋๊ฐ ๊น๋ํ๊ฒ ๋ณด์ด๊ธฐ ๋๋ฌธ์ด๊ณ ๋ก์ฐ๋ ๋ฒจ๋ก ๊ฐ์๋ก ํฌ์ธํฐ ๋๋น ๋์ฑ ์ฅ์ ์ด ๋ถ๊ฐ๋จ ๋ ํผ๋ฐ์ค๋ ์ด๊ธฐํ๊ฐ ํ์๋ก ๋๋ฐ๋๋ฏ๋ก NULL์ด๋ ์๋งจํฑ, ๊ฐ์ฒด ์์ ๊ถ์ ์ธ ๋ถ๋ถ์์ ํจ์ฌ ๋ ๋ชจ๋ํ๊ฒ ์ฌ์ฉํ ์ ์์ ใ ใ ๊ทผ๋ฐ ์ด๊ฑด ์ผ๋ฐ์ผ๋ผ ์ค๋๋ ํ๋ค์ ํฌ์ธํฐ๋ก ํต์ผํ๊ธฐ๋ ํ๊ณ ๋ ํผ๋ฐ์ค๋ฅผ ์ ํธํ๋ ํ์ด๋ ํ์ฌ๋ ๋ถ๋ช ์กด์ฌํจ