NeuroWhAI의 잡블로그

[C++] Designated initializers 본문

개발 및 공부/언어

[C++] Designated initializers

NeuroWhAI 2018. 11. 17. 17:04


T object = { .designator = arg1 , .designator { arg2 } ... };
T object { .designator = arg1 , .designator { arg2 } ... };
#include <iostream>

using namespace std;

struct Foo
{
    int a, b;
    float c = 42.0f;
};

int main()
{
    cout << "Designated initializers" << endl;
    
    Foo f1{ 1, 2, 3.4f };
    Foo f2 = { 1, 2, 3.4f };
    Foo f3{ .a = 1, .b = 2, .c = 3.4f };
    Foo f4 = { .a = 1, .b = 2, .c = 3.4f };
    Foo f5 = {
        .a = 1,
        .b = 2,
        .c = 3.4f,
    };
    Foo f6 = {
        .a = 1,
        .b = f6.a + f6.a,
    };
    
    return 0;
}

C++20부터 지원하는 기능이라고 적혀있는데 C++11 이하를 빼면 컴파일이 잘 됩니다. 무엇??

이런 글이 있던데 C에서는 됬지만 C++에선 굳이 필요하지 않으므로 뺐다는 듯 합니다.

그러다가 다시 필요해졌는지 추가했다는 것?

생성자를 쓰지 직접 이렇게 초기화할 일이 없긴 하겠네요. 있어도 이상하고...

'개발 및 공부 > 언어' 카테고리의 다른 글

[Rust] enum 사용시 주의 사항  (0) 2018.12.06
[Rust] Lifetime의 한계  (0) 2018.11.18
[C++] get/return_temporary_buffer, uninitialized_*에 대하여  (0) 2018.11.14
[Rust] Send와 Sync  (0) 2018.11.12
[C/C++] a[i] == i[a] ???  (0) 2018.11.06


Comments