Memory Allocation of Static Members in a Class

前端 未结 3 1980
别跟我提以往
别跟我提以往 2020-12-17 01:40

I posted a question recently: Initialization of Static Class members.

Now please check this code:

#include
class A
{
    static int o         


        
3条回答
  •  悲哀的现实
    2020-12-17 02:04

    Obviously, it takes memory. And int A::obj_s=0 is exactly what it does: it defines the variable along with it's memory. In fact, when we say we defined a variable X, that means we define a memory of sizeof(X), and that memory region we label as X.


    More about static members:

    A::obj_s is a static member of the class A. And static members exist without any instance. They're not part of instances of A.

    §9.4.2/3 and 7 from the Standard,

    once the static data member has been defined, it exists even if no objects of its class have been created.

    Static data members are initialized and destroyed exactly like non-local objects (3.6.2, 3.6.3).

    Read my complete answer here:

    Do static members of a class occupy memory if no object of that class is created?

提交回复
热议问题