type
date
status
slug
summary
tags
category
icon
password
网址
静态成员
由关键字 static 修饰类体中成员,成为类静态成员(static class member)。类的静态成员为其所有对象共享,不管有多少对象,静态成员只有一份存于公用内存中。 静态数据成员被当作该类类型的全局对象对.
静态属性
在类设计中,用关键字 static 修饰的数据成员为静态数据成员。有该类型实例化的所有对象,共享系统为静态成员分配的一个存储空间,而这个存储空间是程序执行main函数之前分配的,在实例化对象时不再为静态成员分配空间(静态成员数据不在对象空间中)。
1.设计静态数据成员目的是信息共享
全局变量
类的静态数据成员:
总结:
同全局变量相比,使用静态数据成员有两个优势:
1 静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能性;
2 可以实现信息隐藏,静态成员可以是 private 成员,而全局变量不能.
2.静态数据是该类所有对象所共有的,可提供同一类型的所有对象之间,信息共享或信息交换的一种方式。
静态数据成员属于整个类型,使用时可用以下格式:
类名::静态数据成员名 或 对象.静态数据成员名 (前提是可访问符为public)
示例:用静态数据成员记录由同一类建立的对象的数量。
3.在类的成员函数中使用静态数据成员,静态数据成员之前没有this.
静态属性的类型是int,short, char ,并且是const , 可以在类中直接初始化。
静态数据成员的类型可以是其所属类 而非 static 数据成员只能被声明为该类的指针.
总结:
1设计静态数据成员目的是信息共享,和信息交流.
2.类的静态数据成员为所有类对象所共享,不属于某个具体的实例。
3.类的静态数据成员必须在类外定义,定义时不添加static关键字,不能在构造函数的初始化列表中创建。
4.类的静态数据成员类型是int,short, char ,long long ,并且是const , 可以在类中直接初始化,也可以在
类外初始化.
5.在类的成员函数中使用静态数据成员,静态数据成员之前没有this.
6.当类的静态数据成员为公有时,可以在外部函数使用: 类名::静态数据成员名 或 对象.静态数据成员名.
可以在类体中定义自身的静态类型对象.
静态方法
函数成员说明为静态,将与该类的不同对象无关。静态函数成员的调用,在对象之外可以采用下面的方式: 类名::函数名 或对象名.函数名;
与静态数据成员相反,为使用方便,静态函数成员多为公有。
静态成员函数没有 this 指针,因此在静态成员函数显式地使用this指针都将导致编译时刻错误。
试图访问隐式使用 this 指针所指向的非静态数据成员也会导致编译时刻错误。
总结:
一个常规的成员函数声明描述了三件在逻辑上相互不同的事情:
该函数能访问类声明的私用部分。
该函数位于类的作用域之中。
该函数必须经由一个对象去激活(有一个this指针)。
将一个函数声明为友元可以使它只具有第一种性质。
将一个函数声明为static 可以使它只具有第一种和第二种性质.