yujky   发表于 2020-2-13 21:01:33 |栏目:





静态成员变量是一种特殊的成员变量,关键字是static。c++中包括我们可以使用静态成员变量,来实现统计对象个数的目标。(比如我们建一个学生类,每次创建对象时让static自增,那么static就可以用来统计班上同学的个数)。
class Student {
public:
static int total; //静态成员变量,用于统计学生个数
public:
Student(char *name, int age, float score);//构造
void show(); //输出同学个人信息
private:
char *s_name;
int s_age;
float s_score;
};
1234567891011
static 成员变量必须在类声明的外部初始化,具体形式为:
    type class::x = value;
//  类型       变量   值
12
本例中为:
int Student::total = 0; //为total分配内存
1
完整代码为:

#include "stdafx.h"
class Student {
public:
static int total; //静态成员变量,用于统计学生个数
public:
Student(char *name, int age, float score);//构造
void show(); //输出同学个人信息
private:
char *s_name;
int s_age;
float s_score;
};
int Student::total = 0; //为total分配内存

Student::Student(char *name, int age, float score):s_name(name),s_age(age),s_score(score){
        total++; //操作静态成员变量
}![在这里插入图片描述](https://img-blog.csdnimg.cn/20200212164427373.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0pKX0JFTkc=,size_16,color_FFFFFF,t_70)
void Student::show()
{
printf("名字:%s年龄:%d成绩:%f,(当前有%d个学生)\n",s_name, s_age, s_score,total);
}
int main()
{
        Student s1("小明", 15, 90);
        s1.show();
        Student s2("小华", 16, 80);
        s2.show();
        Student s3("小张", 17, 99);
        s3.show();
        Student s4("小王", 18, 60);
        s4.show();
return 0;
}
12345678910111213141516171819202122232425262728293031323334353637
运行结果为:

最后补充:
1.静态成员变量可有多个
2.static 成员变量的内存既不是在声明类时分配,也不是在创建对象时分配,而是在(类外)初始化时分配。反过来说,没有在类外初始化的 static 成员变量不能使用。

回复 显示全部楼层 使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作者相关信息

更多资源

精品推荐

极品资源

原创模板

下载排行

热门标签

快速回复 返回顶部 返回列表