const 对象
- const对象的定义:
const MyClass obj(参数表);
-
const对象不能被赋值,只能初始化,而且一定要初始化,否则无法设置它的值。
-
C++规定:对const对象只能调用const成员函数
const 成员函数
任何不修改数据成员的函数都应该声明为
const
类型。如果在编写const
成员函数时,不慎修改了数据成员,或者调用了其他非const
成员函数,编译器将指出错误,这无疑会提高程序的健壮性。
定义时和实现时在函数头后添加const
关键字
const数据成员
-
const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。同一类的不同的对象其const数据成员的值可以不同。
-
常量(const)数据成员声明:在该成员声明前加
const
关键字 -
const数据成员的初始化只能在类构造函数的初始化表中进行,不能在构造函数中对它赋值。
static数据成员
【静态(static)数据成员】
- 静态数据成员不属于对象的一部分,而是类的一部分;
- 静态数据成员的初始化不能放在类的构造函数中;
- 类定义并不分配空间,空间是在定义对象时分配;
- 但静态数据成员属于类,因此定义对象时并不为静态成员分配空间。
【静态数据成员的定义】
- 为静态成员分配空间称为静态成员的定义;
- 静态成员的定义一般出现在类的实现文件中。如在SavingAccount类的实现文件中,必须要如下的定义:
double SavingAccount::rate = 0.05;
- 该定义为
rate
分配了空间,并给它赋了一个初值0.05。
如果没有这个定义,连接器会报告一个错误。
【静态数据成员的使用】
- 可以通过作用域操作符从类直接调用。如:
SavingAccount::rate
- 但从每个对象的角度来看,它似乎又是对象的一部分,因此又可以从对象引用它。如有个
SavingAccount
类的对象obj
,则可以用:
obj.rate
- 由于是整个类共享的,因此不管用哪种调用方式,得到的值都是相同的
static成员函数
定义静态成员函数的主要目的是访问静态的数据成员。
【静态(static)成员函数】
- 成员函数也可以是静态的。静态的成员函数是为类的全体对象服务,而不是为某个类的特殊对象服务
- 由于静态成员函数不需要借助任何对象就可以被调用,所以编译器不会为它暗加一个
this
指针。因此,静态成员函数无法处理类中的非静态成员变量。 - 静态成员函数的声明只需要在类定义中的函数原型前加上保留词
static
。
【静态成员函数使用】
- 静态成员函数可定义为内嵌的,也可在类外定义。在类外定义时,不用
static
。 - 静态成员函数的访问:可以通过类作用域限定符或通过对象访问
类名::静态成员函数名()
对象名.静态成员函数名()
网友评论