静态成员及其函数
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
静态成员
静态数据成员
静态数据成员的基本介绍:
在C++中,静态数据成员是属于类的,一旦声明某个数据成员为静态数据成员,则该类的每个对象都可以访问它。声明格式:
static数据类型数据成员名;
为什么使用静态数据成员而不使用全局变量呢?原因是全局变量会带来不安全性,并且破坏了面向对象程序设计的信息隐蔽技术和封装型特点。
在一个类中,无论建立多少个对象,都只有一个静态数据成员的拷贝,从而实现了一个类的不同对象之间数据的共享。
关于静态数据成员的几点说明:
1.定义格式:
static数据类型数据成员名;
2.其初始化与普通数据成员不同,须在类外单独进行初始化,而且初始化要在定义对象之
前进行;
格式:数据类型类名::静态数据成员名=初始值;
3.静态数据成员属于类,而不属于某个对象,可以通过类来访问:
类名::静态数据成员名
4.对象访问静态数据成员格式:
对象名.静态数据成员名;
对象指针->静态数据成员名;
静态成员函数
静态成员函数的引入:
静态成员函数属于类,不属于该类的某个对象,为该类的所有对象共享。
定义格式:
static 返回类型静态成员函数名(实参表);
调用格式:
类名::静态成员函数名(实参表)
对象.静态成员函数名(实参表)
对象指针->静态成员函数名(实参表)
关于静态成员函数的几点说明:
1.静态成员函数主要用来静态数据成员;
2.私有静态成员函数不能被类外部的的函数和对象访问;
3.使用静态成员函数的原因是可以用它在建立任何对象之前调用静态成员函数对静态数
据成员进行处理,而这一功能是普通成员函数不能做到的。
4.编译系统将静态成员函数限定为内部链接,与现行文件相连接的其他文件中的同名函数
不会与该函数发生冲突,维护了该函数使用的安全性,这就是使用静态成员函数的另一个原因。
5.同静态数据成员一样,公有静态成员函数在类外可以使用如下格式进行调用:
类名::静态成员函数名()
6.静态成员函数与非静态成员函数的区别是:静态成员函数属于类,没有this指针,而非
静态成员函数属于该类的某一对象,有指向该对象的this指针。在访问方面,静态成员函数在类外可以直接通过类访问或者通过对象访问,而非静态成员函数在类外只能通过对象访问。静态成员函数一般不访问非静态成员(包括函数成员和数据成员)。如果确实需要访问,一般通过对象名或对象指针或对象引用进行访问。