static静态变量和静态成员函数

静态变量:在某些情况下我们希望一个类的所有对象共享一个变量,这种被所有对象共享的变量叫做静态变量。

静态成员变量只能在类定义之外初始化,且只能初始化一次。

静态成员函数:如果一个函数不访问任何类的对象的数据,但却希望此函数作为类的成员。

静态函数的调用不需要类的对象,且其实现中不能有该类的任何对象。静态函数不能用到任何的非静态成员变量和非静态成员函数。

初始化应该按如下方式进行:

int Server::turn = 0;
int Server::nowopen = true;
一个例子:

#pragma once
#include <iostream>
using namespace std;

class Camera
{
public:
	Camera(void);
	~Camera(void);

	void setValue(int v);
	int getValue();

private:
	static int m_camera;
};
#include "Camera.h"

int Camera::m_camera = 0;

Camera::Camera(void)
{
	cout << "Init " << m_camera << endl;
}


Camera::~Camera(void)
{
}


void Camera::setValue(int v)
{
	m_camera = v;
}


int Camera::getValue()
{
	return m_camera;
}
#include "Camera.h"

int main()
{
	Camera c1, c2;
	c1.setValue(20);
	c2.setValue(30);
	cout << c1.getValue() << endl;
	cout << c2.getValue() << endl;

	return 0;
}
结果是:

Init 0
Init 0
30
30
如果m_camera不为静态变量的话,则结果是:

Init 0
Init 0
20
30







你可能感兴趣的:(C++,函数)