静态成员函数如何初始化
#include <iostream>
using namespace std;
class Test {
private:
static int statica;
int b;
public:
// Test(): statica(1) {}; //错误!static数据成员不能通过初始化列表初始化。
Test(): b(1) {statica = 1;}; //正确。
};
int main(void)
{
return 0;
}
#include <iostream>
using namespace std;
class Test {
private:
static int statica;
int b;
};
int Test::statica = 1; //static成员的一般初始化方法。
int main(void)
{
return 0;
}
如何访问静态数据成员
静态数据成员是类的数据成员,但不是对象的组成部分。那么在没定义任何对象的情况下,如何读取静态成员的初始值呢?
(也许会想到用 类名::静态数据成员,但是如果该静态数据成员是private的,那么不能这样访问!)
答案是通过静态成员函数。
静态成员函数不含this指针,因此不能直接访问类的非静态数据成员!(可间接通过参数传递对象名访问)
补充:静态数据成员和静态成员函数可以通过类名访问,也可以通过对象访问。
如下例子:
#include <iostream>
using namespace std;
class Test {
private:
static int statica;
public:
static int getStatica() //通过静态成员函数访问静态数据成员。
{
return statica;
}
};
int Test::statica = 1;
int main(void) { cout << Test::getStatica(); return 0; }
特例static const
static const 类型的成员可以在类的定义体中初始化。
#include <iostream>
using namespace std;
class Test {
private:
const static int consta = 1;
};
int main(void)
{
return 0;
}