์ƒˆ์†Œ์‹

๋ฐ˜์‘ํ˜•
C++/๋ฌธ๋ฒ•

C++ ๊ท ์ผ ์ดˆ๊ธฐํ™” (Uniform Initialization)

  • -
๋ฐ˜์‘ํ˜•

๐Ÿ‘‰ ํฌ์ŠคํŒ… ๋‚ด์šฉ

  • ๊ท ์ผ ์ดˆ๊ธฐํ™” (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)์„ ์‚ฌ์šฉํ•˜๋ฉด ํ†ต์ผ ์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™” ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ˜์‘ํ˜•

'C++ > ๋ฌธ๋ฒ•' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

C++ malloc๊ณผ new์˜ ์ฐจ์ด  (0) 2024.02.17
C++ string_view  (0) 2024.02.16
C++ ๊ตฌ์กฐ์  ๋ฐ”์ธ๋”ฉ(Structured Bindings)  (0) 2024.02.15
C++ ์ƒ์ˆ˜ ์ง€์ • (const, constexpr, consteval)  (0) 2024.02.14
C++ Initializer_list  (0) 2024.02.14
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.