C++ 멤버 변수의 상수화
조회수 696회
class Test
{
const int temp = 1000; // 위와 같은 행위가 열혈 C++ 에서는 불가능하다고 합니다.
};
VS2017 기준에서는 잘 되더라구요. 열혈강의 책이 오래되서 표준이 변해서 되는건가요? 아니면 VS2017 컴파일러가 알아서 지원을 해서 그런건가요 ?
검색을 통해 멤버변수를 상수화 하는 방법에는 member initializer을 이용한 방법으로 아래와 같습니다.
class Test
{
const int temp;
Test() : temp(1000) {}
};
전자의 방법이 되더라도 후자의 방법을 취하는게 맞나여?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
class Test { const int temp = 1000; // 위와 같은 행위가 열혈 C++ 에서는 불가능하다고 합니다. };
위와 같은 초기화는 C++11에서 사용 가능한 방식입니다. (아래 경고 내용 참조)
VS2017는 C++11을 지원하기 때문에 정상적으로 컴파일되는 것으로 생각됩니다.
(참조) https://docs.microsoft.com/ko-kr/cpp/what-s-new-for-visual-cpp-in-visual-studio?view=vs-2017
이 릴리스에서는 C++ 컴파일러 및 표준 라이브러리를 C++11 및 C++14 기능에 대한 강화된 지원 기능과, C++17 표준에서 선보일 것으로 예상되는 특정 기능에 대한 임시 지원 기능으로 업데이트했습니다.
댓글 입력