• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

[4:00]static 멤버 변수의 초기화에서 문득 궁금해진 점

22.08.28 22:38 작성 조회수 335

2

class Some {

public:

static int _val;

};

int Some::_val = 1;

마지막 줄인 int Some::_val = 1; 에서 앞에 int가 붙는 이유는 무엇인가요?

Some이라는 클래스 안의 _val이라는 int형 멤버 변수라는 것으로 충분히 의미가 전달될 수 있는데, 앞에 int를 붙여서 변수 선언 과정처럼 초기화해야 하는 이유가 뭘지 궁금합니다.

답변 1

답변을 작성해보세요.

2

강민철님의 프로필

강민철

2022.08.30

그렇게 명시하지 않으면 아래와 같이 오류가 떨어집니다.

(사실 이는 아래 오류 메세지에 대한 해석 그대로이긴 하지만..^^;;)

C++에서는 모든 선언에 대해 type이 지정되어 있어야 하며,

int를 생략하면 컴파일러가 type이 무엇인지 모르기 때문입니다.

(Class 멤버의 형이 무엇인지까지는 유추하지는 않기 때문입니다)

cc.cc:9:7: error: C++ requires a type specifier for all declarations
Some::_val = 1;
      ^
1 error generated.