静态数据成员和静态成员函数

静态成员函数如何初始化

#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;
}
原文地址:https://www.cnblogs.com/helloweworld/p/2833776.html