静态成员

  • Post author:
  • Post category:其他


一.静态成员分为静态数据成员和静态成员函数。

二.静态成员可以实现多个对象的共享,突破使用全局变量的局限。

三.静态数据成员的介绍

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 版权协议,转载请附上原文出处链接和本声明。