Class static type initialization

后端 未结 1 1206
眼角桃花
眼角桃花 2020-12-21 17:31

So I just had a question, In c++11 why do I have to specify the type of a static member to assign to it a value?

Example:



        
相关标签:
1条回答
  • 2020-12-21 18:11

    size_t Player::numOfObj = 0; is syntax for definition. A (non-inline) static variable must be defined exactly once in exactly one translation unit. Not more, and not less (unless the variable is unused).

    can't I just do Player::numOfObj = 0; due to it being already declared?

    You can do that. But not in the namespace scope because that is syntax of an expression statement. Expression statements may not be in the namespace scope. They are allowed only in a block scope. The meaning of this expression is that the value of the variable is assigned. Assignments can be done as many times and in as many translation units as you like (as long as the type is non-const and assignable).

    So, if definition had this syntax, there would be conflict with the syntax already having another meaning. That would be undesirable.

    0 讨论(0)
提交回复
热议问题