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) 是的,静态变量可以通过类本身或对象来访问。第一个变量解释得很好。可能是