一.静态成员分为静态数据成员和静态成员函数。
二.静态成员可以实现多个对象的共享,突破使用全局变量的局限。
三.静态数据成员的介绍
1.静态数据成员的定义形式:
static 类型名 变量名。
2.静态数据成员不属于任何一个对象,它是属于类的,故它能被所有对象共享。
3.静态数据成员不能用参数初始化表初始化,它一般是在类外进行初始化的,一般形式为:
数据类型名 类名::静态数据成员名=初值。
4.静态数据成员的引用:
对象名.数据成员名,也可以通过类名类引用
。如:
b.date;//通过对象引用静态数据成员
Box::date//通过类名引用静态数据成员
5.静态数据成员的作用域只限于该类的作用域。
6,如下简单代码涉及静态数据成员相关知识点的运用。
#include<iostream>
using namespace std;
class Stu
{
public:
Stu(int, int);//声明一个构造函数
void display();//声明一个display函数
int mat![在这里插入图片描述](https://img-blog.csdnimg.cn/20190518172942484.png)h;
int chin;
static int clas;//声明一个class静态数据成员,其中clas表示班级
};
Stu::Stu(int m, int c)//定义一个构造函数
{
math = m;
chin = c;
}
void Stu::display()//定义一个display函数,用来打印输出班级和语文,数学成绩
{
cout << "班级:" << clas << " " << "语文:" << chin << " " << "数学:" << math << endl;
}
int Stu::clas = 1;//为静态数据成员初始化
int main()
{
Stu student[3] = {
Stu(88,89),
Stu(99,88),
Stu(88,78)
};//定义一个对象数组
for (int i = 0; i < 3; i++)
{
student[i].display();
}//循环打印出每位同学的成绩
cout <<"班级:"<< Stu::clas<<endl;//通过类名访问静态数据成员
cout <<"班级:" <<student[0].clas;//通过对象名访问静态数据成员
return 0;
}
二.静态成员函数的介绍:
1.静态成员函数只属于类而不属于对象。
2.静态成员函数一般只访问静态数据成员,而不访问非静态数据成员。
3.静态成员函数的引用,可以通过对象名,也可以通过类名。
4.静态成员函数的定义:
static 类型名 函数名(参数表列)
5.代码块示例如下:
#include<iostream>
using namespace std;
class Sum
{
public:
Sum(int = 0, int = 0);//声明一个指定为默认参数值的构造函数
static void get1_sum()//在类内定义一个静态成员函数
{
cout <<"S1="<< x + y<<endl;
}
void get2_sum()//在类内定义一个普通成员函数
{
cout<<"S2=" << z + k;
}
private:
static int x;//定义静态数据成员
static int y;//定义静态数据成员
int z;
int k;
};
Sum::Sum(int a, int b)//定义构造函数
{
z = a;
k = b;
}
int Sum::x = 10;//为静态数据成员初始化
int Sum::y = 23;//上同
int main()
{
Sum s1;
s1.get1_sum();//通过对象名引用静态数据成员
Sum s2(10, 23);
s2.get2_sum();
return 0;
}
版权声明:本文为weixin_43597743原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。