객체 μƒμ„±μ‹œ μ†Œκ΄„ν˜Έμ™€ μ€‘κ΄„ν˜Έ 차이

2023. 1. 14. 22:54Β·ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/C++ μ‘μš©

 

C++ 11은 균일 μ΄ˆκΈ°ν™”(uniform initialization)λ₯Ό λ„μž…ν–ˆμŠ΅λ‹ˆλ‹€. 균일 μ΄ˆκΈ°ν™” ꡬ문은 μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜λ©°, μ΄μ „μ—λŠ” ν‘œν˜„ν•  수 μ—†μ—ˆλ˜ λ°©μ‹μ˜ 객체 생성을 ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

class Foo {
...

private:
	int x{0};	// OK
    int y = 0;  // OK
    int z(0);	// Error!
};

 

반면 볡사할 수 μ—†λŠ” 객체(예λ₯Ό λ“€λ©΄ std::atomic)은 μ€‘κ΄„ν˜Έλ‚˜ μ†Œκ΄„ν˜Έλ‘œλŠ” μ΄ˆκΈ°ν™”ν•  수 μžˆμ§€λ§Œ =λ‘œλŠ” μ΄ˆκΈ°ν™” ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

 

std::atomic<int> val1{0};	//OK
std::atomic<int> val2(0);	//OK
std::atomic<int> val3 = 0;	//Error!

 

 

또, μ€‘κ΄„ν˜Έ μ΄ˆκΈ°ν™”μ˜ ν˜μ‹ μ μΈ κΈ°λŠ₯은 λ°”λ₯΄μ§€ μ•Šμ€ 암묡적 ν˜•λ³€ν™˜μ„ λ°©μ§€ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

 

double d1, d2, d3;
...

int sum1{d1+d2+d3};	// Error!
int sum2(d1+d2+d3);	// OK
int sum3 = d1+d2+d3;	// OK

 

λ˜ν•œ μ†Œκ΄„ν˜Έ μ΄ˆκΈ°ν™”μ˜ 방식은 μƒμ„±μž 호좜과 ν•¨μˆ˜ ν˜ΈμΆœμ„ ν—·κ°ˆλ¦¬κ²Œ λ§Œλ“€μ§€λ§Œ μ€‘κ΄„ν˜Έ μ΄ˆκΈ°ν™” 방식은 이 λΆ€λΆ„μ—μ„œ μžμœ λ‘­μŠ΅λ‹ˆλ‹€.

 

Foo f1(10)	// 인수 10d으둜 Foo의 μƒμ„±μž 호좜
Foo f2()	// Fooλ₯Ό λ°˜ν™˜ν•˜λŠ” f2의 ν•¨μˆ˜ μ„ μ–Έ..!
Foo f3{}	// 인수 μ—†λŠ” Foo의 μƒμ„±μž 호좜(Foo f3)κ³Ό κ°™λ‹€

 

 

 

 

좜처: Effective Modern C++

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)

'ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ > C++ μ‘μš©' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

std::thread와 std::async  (0) 2023.01.14
[std] iterator보단 const_iterator !  (0) 2023.01.14
[C++]포인터와 레퍼런슀 차이  (0) 2023.01.09
μ„±λŠ₯ μ΅œμ ν™”λ₯Ό μœ„ν•œ κΏ€νŒ!  (1) 2022.12.30
[C/C++] unsigned와 signed의 κ°’ 비ꡐ 주의  (0) 2022.03.23
'ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/C++ μ‘μš©' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • std::thread와 std::async
  • [std] iterator보단 const_iterator !
  • [C++]포인터와 레퍼런슀 차이
  • μ„±λŠ₯ μ΅œμ ν™”λ₯Ό μœ„ν•œ κΏ€νŒ!
μ„œμ•„λž‘πŸ˜ƒ
μ„œμ•„λž‘πŸ˜ƒ
Just Do ItπŸ’ͺ
  • μ„œμ•„λž‘πŸ˜ƒ
    G-Stack
    μ„œμ•„λž‘πŸ˜ƒ
  • 전체
    였늘
    μ–΄μ œ
    • 전체보기 (144)
      • ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ (78)
        • C++ 기초 (28)
        • C++ μ‘μš© (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • 컴퓨터 ꡬ쑰 & 운영체제 (31)
      • μ•Œκ³ λ¦¬μ¦˜ (12)
      • λ°μ΄ν„°λ² μ΄μŠ€ (5)
      • λ„€νŠΈμ›Œν¬ (3)
      • λ””μžμΈνŒ¨ν„΄ (5)
      • μ„œλΉ„μŠ€ & 툴 (7)
      • νŠΈλ Œλ“œ&이슈 (1)
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

  • 곡지사항

    • GμŠ€νƒμ˜ 기술 λΈ”λ‘œκ·Έ
  • 인기 κΈ€

  • νƒœκ·Έ

    컴퓨터
    파이썬
    pointer
    λ°μ΄ν„°λ² μ΄μŠ€
    STD
    μŠ€νƒ
    가상메λͺ¨λ¦¬
    init
    λ°°μ—΄
    component
    반볡문
    ν•¨μˆ˜
    μž¬κ·€
    Thread
    μ•Œκ³ λ¦¬μ¦˜
    λ””μžμΈνŒ¨ν„΄
    c++
    포인터
    λ³€μˆ˜
    상속
    RAM
    νŒ¨ν‚€μ§€
    fork
    go
    cpu
    νŒŒμΌμž…μΆœλ ₯
    λ©”λͺ¨λ¦¬
    c
    쑰건문
    ν•˜λ“œλ””μŠ€ν¬
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.6
μ„œμ•„λž‘πŸ˜ƒ
객체 μƒμ„±μ‹œ μ†Œκ΄„ν˜Έμ™€ μ€‘κ΄„ν˜Έ 차이
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”