Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 静态成员变量';这是课堂作业_C++_Static Members - Fatal编程技术网

C++ 静态成员变量';这是课堂作业

C++ 静态成员变量';这是课堂作业,c++,static-members,C++,Static Members,这是密码 class A { public: static A *get_a() { if(_pa == 0) _pa = new A; return _pa; } private: static A *_pa = 0; //cannot compile }; 在上面的代码中,如果我将\u pa的定义移出类 A * A::_pa = 0; //can compile 我的问题是,类主体中的静态A*\

这是密码

class A {
public:
    static A *get_a()
    {
        if(_pa == 0)
            _pa = new A;
        return _pa;
    }

private:
    static A *_pa = 0;  //cannot compile
};
在上面的代码中,如果我将
\u pa
的定义移出类

A * A::_pa = 0;  //can compile
我的问题是,
类主体中的静态A*\u pa=0
只是一个声明,而不是一个定义,对吗


此外,为类内的
静态
数据成员赋值有效吗?

除非它是常量整型(char,short,int,…),您必须在.cpp文件中定义静态成员以及头中的声明

header:
class XYZ {
  static XYZ * instance;
};

//cpp:
XYZ * XYZ::instance;

除非是常量整型(char,short,int,…),否则除了头中的声明外,还必须在.cpp文件中定义静态成员

header:
class XYZ {
  static XYZ * instance;
};

//cpp:
XYZ * XYZ::instance;

1) 正确,它甚至在C++11中都不起作用,因为它所做的只是将它分到通常默认初始化的位置(即创建对象时)。2) 是的,静态变量可以通过类本身或对象来访问。第一个变量解释得很好。1)的可能重复正确,它在C++11中甚至不起作用,因为它所做的只是将其分到通常默认初始化的位置(即创建对象时)。2) 是的,静态变量可以通过类本身或对象来访问。第一个变量解释得很好。可能是