๐ ํฌ์คํ
๋ด์ฉ
- ๊ท ์ผ ์ด๊ธฐํ (Uniform Initialization)์ ๋ํด
- ๊ฐ์ฒด ์์ฑ ์ ๋ฌธ์ ์
- ์ฌ์ฉ๋ฒ ๋ฐ ์ฃผ์
๐ ๊ฐ์ฒด ์์ฑ ์ ๋ฌธ์ ์
โ
์ฝ๋
#include <iostream>
using namespace std;
class A
{
public:
A() { cout << "A Init" << endl; }
};
int main()
{
A a();
}
โ
์คํ ๊ฒฐ๊ณผ
// ...
๋น์ฐํ ์์ฑ์๋ฅผ ํธ์ถํ ๊ฒ ๊ฐ์ง๋ง ์์ฑ์๊ฐ ํธ์ถ๋์ง ์์๋ค..!
์ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ ๊ฑธ๊น?
์๋์ ๋ฌธ๋ฒ์ ๋ณด๋ฉด ์ฌ์ค ํจ์๋ฅผ ์ ์ํ๋ ๊ฒ๊ณผ ๋์ผํ๊ฒ ๋ณด์ธ๋ค.
๊ทธ๋ ๊ธฐ์ ํด๋น ๋ฌธ๋ฒ์ ์ปดํ์ผ๋ฌ์์๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ ๊ฒ์ด ์๋ ํจ์๋ฅผ ์ ์ํ ๊ฑธ๋ก ํ๋จํ ๊ฒ์ด๋ค..
A a();
์ด๋ฌํ ์ํฉ์ ๋์ฒํ๊ธฐ ์์ ๊ท ์ผํ ์ด๊ธฐํ(Uniform Initialization)๋ฅผ ์ด์ฉํ๋ค
๐ ๊ท ์ผํ ์ด๊ธฐํ ์ฌ์ฉ
โ
์ฝ๋
#include <iostream>
using namespace std;
class A
{
public:
A() { cout << "A Init" << endl; }
};
int main()
{
A a{};
}
โ
์คํ ๊ฒฐ๊ณผ
// A Init
์ด๋ฒ์๋ ์ ์์ ์ผ๋ก ํธ์ถ์ด ์๋ฃ๋์๋ค.
๊ตณ์ด ํด๋น ๋ฌธ๋ฒ์ ๋จ์ ์ด๋ผ๊ณ ํ๋ฉด ์์์ ํ์
๋ณํ์ ํ์ฉํ์ง ์๋๋ค.
๐ ๊ท ์ผํ ์ด๊ธฐํ ์ฃผ์์ฌํญ
โ
์ฝ๋
#include <iostream>
using namespace std;
class A
{
public:
A(int val) { cout << "A Init" << endl; }
};
int main()
{
A a{1.0}; // Error
A b(1.0); // Ok
}
์ฌ์ค ํด๋น ๋ถ๋ถ์ ๋ฌธ์ ์ ์ด๋ผ๊ณ ํ๊ธฐ์๋ ์ ๋งคํ ๋ถ๋ถ์ด๋ค.
ํน์ ๋ถ๋ถ์์๋ ์์์ ์ธ ํ ๋ณํ์ ๋ง์ ์คํ๋ ค ์ฌ์ฉ์ ์์ ํ ๋ถ๋ถ์ด ๋ฐ์ํ ์ ๋ ์๋ค.
ํ ๋ณํ ์ ๋ฐ์ดํฐ ์์ค์ด ๋ฐ์ํ๋ฉด ๋ถ๊ฐ๋ฅํ๋ค
- float -> int
- double -> int
๐ ์ถ๊ฐ์ ์ธ ์ฌ์ฉ๋ฐฉ๋ฒ
โ
์ฝ๋
int a = 10;
int a{10};
๋ ๊ฐ์ ๋ฌธ๋ฒ์ ๊ฐ์ ์๋ฏธ๋ฅผ ์ง๋๋ค. ๋ ๋ค a๋ฅผ 10์ผ๋ก ์ด๊ธฐํ๋ผ๋ ์๋ฏธ๋ฅผ ์ง๋๋ค.
์ด์ฒ๋ผ ๊ท ์ผํ ์ด๊ธฐํ(Uniform Initialization)์ ์ฌ์ฉํ๋ฉด ํต์ผ ์ ์ผ๋ก ๋ณ์๋ฅผ ์ด๊ธฐํ ํ๋๋ฐ ์ฌ์ฉํ ์ ์๋ค.