2015. 2. 13. 18:33

기존에 우리는 배열을 선언할때

int arr[5] = {1,2,3,4,5};

이렇게 선언이 가능했다.


그럼, class도 literal하게 선언이 가능할까?


해당사항은 c++98 컴파일러에서는 불가능 했는데,

c++11부터!  literal class로 선언 가능해 졌다.



#include <iostream>

class A
{
    public:
    int a;
    char b;
};


int main()
{
    A a = A{ 1, 'a'};
    std::cout << "a: " << a.a << "\tb: " << a.b << std::endl;
    return 0;

 



$ c++ -std=c+*98 main.cpp
main.cpp: In function ‘int main()’:
main.cpp:13:9: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11
  A a = A{ 1, 'a'};
         ^ 

 

  c++98 컴파일러로 컴파일 하니 c++11 컴파일러로 하라고 친절하게 설명해 주었다. ㅋ

 extended initializer lists only available with -std=c++11 or -std=gnu++11

 

  

$ c++ -std=c++11 main.cpp
$ a.out
a: 1    b: a 


Posted by Triany