• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

9:12 초 class 내의 non-static 멤버 중 class 초기화시 {}는 되고, ()는 안되는 이유

20.10.18 01:11 작성 조회수 96

0

class Something

{

private:

B m_b{ 1024 };

}

강의에서는 curly bracket을 이용해서 class B의 멤버변수에 값을 할당하는데, bracket ()을 사용해서는 오류가 발생합니다.

Member initializer list에서는 bracket을 이용해서 값을 할당할 때 bracket ()이 가능한데 어떤 차이가 있는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

Hello Yeo님의 프로필

Hello Yeo

2020.10.19

안녕하세요? 이 부분에 대해서는 제가 구체적으로 설명드리긴 힘들겠군요.
다만 "Bjarne Stroustrup, The C++ programming language 4th ed., 504 pp." 에서는 다음과 같이 언급하고 있습니다.
"For pretty obscure technical reasons related to parsing and name lookup, the {} and = initializer notations can be used for in-class member initializers, but the () notation cannot."

static member variable은 다른 member 들과는 조금 다른 특성을 가지고 있기 때문이라 생각되는데, 이는 8.10 강의에서 다루게 됩니다.