C++类中的静态成员

1 静态类成员变量
  • 无论创建了多少对象,程序都只创建一个静态类变量副本。这对于所有类对象都共享的具有相同值的类私有数据是很方便的。
  • 静态类成员变量单独存储,不是对象的组成部分。
  • 要在类的实现文件中对其进行初始化,因为如果在头文件中初始化,将头文件包含在不同的文件中时,会在多处出现初始化副本而出现错误。
//student.h
#ifndef CL_STUDENT_H
#define CL_STUDENT_H
#include <QString>
class cl_student
{
private:
	QString m_name;
	static QString sta_school;//定义静态类成员变量	
public:
	cl_student(QString name);	
	~cl_student();
};
#endif

//student.cpp
#include <student.h>
QString cl_student::sta_school = "UESTC";//初始化静态类成员变量
cl_student::cl_student(QString name)
{
	m_name = name;
}
cl_student::~cl_student()
{
}
2 静态类成员函数
  • 不能通过对象调用静态类成员函数,它也不能使用this指针。
  • 不与特定的对象相关联,只能使用静态类数据成员。
  • 如果静态类成员函数在public部分被声明,在类外我们可以用类名加作用域解析运算符来调用它。
  • 静态类成员函数在类头文件声明时加static,在类实现文件中不用加static。
//student.h
#ifndef CL_STUDENT_H
#define CL_STUDENT_H
#include <QString>
class cl_student
{
private:
	QString m_name;
	static QString sta_school;//定义静态类成员变量,不分配空间
public:
	cl_student(QString name);	
	~cl_student();
	static QString getSchool();//声明静态类成员函数
};
#endif

//student.cpp
#include <student.h>
QString cl_student::sta_school = "UESTC";//初始化静态类成员变量
QString cl_student::getSchool()//静态类成员函数的实现
{
	return sta_school;
}

cl_student::cl_student(QString name)
{
	m_name = name;
}
cl_student::~cl_student()
{
}

//main.cpp
#include<qDebug>
#include <QString>
int main()
{
	cl_student mystudent("dwp");
	QString school = cl_student::getSchool();//不能通过对象调用
	qDebug() << school;
}
3 静态类成员常量
  • 定义静态类成员常量相当于在类中定义了常量,可在多个对象间共享只读数据。
  • 该常量与其它静态变量存储在一起,不存储在对象中。属于类,不属于某个类对象。
  • 对静态类成员常量,类只有一个,被所有构造的类对象共享。
  • 在类头文件中定义时就可以初始化。
//student.h
#ifndef CL_STUDENT_H
#define CL_STUDENT_H
#include <QString>
class cl_student
{
private:
	QString m_name;
	static QString sta_school;//定义静态类成员变量
	static const QString country = "CHINA";//定义并初始化静态类成员常量
public:
	cl_student(QString name);	
	~cl_student();
};
#endif

//student.cpp
#include <student.h>
QString cl_student::sta_school = "UESTC";//初始化静态类成员变量
cl_student::cl_student(QString name)
{
	m_name = name;
}
cl_student::~cl_student()
{
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值