现在的位置: 首页 > 综合 > 正文

static成员和static成员函数

2014年01月04日 ⁄ 综合 ⁄ 共 801字 ⁄ 字号 评论关闭

下面用一个简单的程序加以理解

#include <iostream>
#include <string>
using namespace std;

class   Test   
{
	public:
		static int j;
		static void   init();//init定义为static 或非static都可以修改static成员i的值
		static int revise_i(int x);
		int  get_i(); 
        //由于没有this指针,static成员函数不能反问对象的非static成员,用static输出k是非法的
	
	private:
		static int i;
		int k;
		const static int r = 1; //只有const static 成员在类定义时初始化
		//若将上面的i直接初始化,编译时报错
};

//外部定义时不能再标示static
int Test::i=0; //very important:外部定义(正好一次),之后i只能通过init修改
int Test::j=5; //j为public,之后可以直接访问和修改

void   Test::init()
{
	i=10;
}

int   Test::get_i()
{
	return   i;
}

int Test::revise_i(int x)
{
	i = x;
	return i;
}

int   main()
{
	Test   obj;
	cout << obj.get_i() << endl; //通过
	obj.init(); //私有的静态成员只能通过类的静态成员函数进行修改
	cout << obj.get_i() << endl;	
	cout << Test::j << endl;
	obj.j = 15;  //公有的静态成员可以直接进行修改,访问方式可以obj.j或者Test::j
	
	Test::revise_i(555);
	cout << "after revise_i, i = " << obj.get_i() << endl;
	cout << Test::j << endl;
	system("pause");
	return   0;
}

抱歉!评论已关闭.