C++静态数据成员实现-阿里云开发者社区

开发者社区> 开发与运维> 正文

C++静态数据成员实现

简介: 静态数据成员是在一个类中用关键字static声明的数据成员。在C++中,一般使用静态成员来代替C语言的全局变量,以达到数据共享。C和C++的全局变量有一定的局限性,可以任意被修改,也容易和其它的变量名冲突,故在C++中,一般不使用全局变量。

静态数据成员是在一个类中用关键字static声明的数据成员。在C++中,一般使用静态成员来代替C语言的全局变量,以达到数据共享。C和C++的全局变量有一定的局限性,可以任意被修改,也容易和其它的变量名冲突,故在C++中,一般不使用全局变量。

静态数据成员必须进行初始化,初始化应在类体外进行,静态数据成员也可以引用,但不能引用私有数据部分。

接下来看一个例子:

#include <iostream>
#include <cstring>
using namespace std ; 
class Student 
{
	private :
		//静态成员变量 
		static int age ;
		static float score ; 
		string name ;
	public :
		static int x , y ;
		//构造函数 
		Student();
		//析构函数 
		~Student(); 
		//设置信息 
		int setstuinfo(int age , float score , string name);
		//打印信息 
		int Printstuinfo();
};

//静态成员必须初始化 
int Student::age = 24 ; 
float Student::score = 86.6 ; 
int Student::x = 100 ; 
int Student::y = 200 ;

Student::Student()
{
	this->name = "YYX" ;
	cout << this->name << endl ;
	cout << this->age << endl ; 
	cout << this->score << endl ; 
}
Student::~Student()
{
	this->name = "NULL";
	cout << this->name << endl ;
}
int Student::setstuinfo(int age , float score , string name)
{
	this->age = age ; 
	this->score = score ; 
	this->name = name ;
}

int Student::Printstuinfo()
{
	cout << this->name << endl ;
	cout << this->age << endl ; 
	cout << this->score << endl ; 
}

int main(void)
{
	Student stu1 ;
	//指针 
	Student *p ;
	p = &stu1 ;
	p->setstuinfo(25,96,"XXX");
	p->Printstuinfo();
	//静态成员的引用---->不可以引用私有成员
	cout << p->x << endl ; 
	cout << p->y << endl ;
	Student::x = 80 ;
	Student::y = 90 ;
	cout << p->x << endl ; 
	cout << p->y << endl ;
	return 0 ;
}
运行结果:

YYX

24 

86.6

XXX

25

96

100

200

80

90

NULL


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章