C++语法08-常类型

程序中各种形式的数据共享,在不同程度上破坏了数据的安全性。常类型的引入,就是为了既保证数据共享又防止数据被改动。常类型是指使用类型修饰符const说明的类型,常类型的变量或对象成员的值在程序运行期间是不可改变的。

1. 常引用

如果在说明引用时用const修饰,则被说明的引用为常引用。如果用常引用作形参,便不会产生对实参的不希望的更改。常引用的说明形式如下:

const 类型 &引用名;

在实际应用中,常引用往往用来作函数的形参,这样的参数称为常参数。

2. 常对象

如果在说明对象时用const修饰,则被说明的对象为常对象。常对象的数据成员值在对象的整个生存期内不能被改变。常对象的说明该形式如下:

类名 const 对象名[(参数名)];或者 const 类名 对象名[(参数表)];

注意:在定义对象时必须进行初始化,而且不能被更新。

3. 常对象成员

3.1 常数据成员

类的数据成员可以是常量或者常引用,使用const说明的数据成员称为常数据成员。如果在一个类中说明了常数据成员,那么构造函数就只能通过成员初始化列表对该数据成员进行初始化,而其他任何函数都不能对该成员赋值。

3.2 常成员函数

在类中使用关键字const说明的成员函数为常成员函数,常成员函数的说明格式如下:

类型说明符 函数名(参数表)const;

const是函数类型的一个组成部分,因此在声明函数和定义函数时都要有关键字const。在调用时不必加const。

说明:

(1)常成员函数可以访问常数据成员,也可以访问普通数据成员。常数据成员可以被常成员函数访问,也可以被普通成员函数访问。

数据成员 普通成员函数 常成员函数
普通数据成员 可以访问,也可以改变值 可以访问,但不可以改变值
常数据成员 可以访问,但不可以改变值 可以访问,但不可以改变值
常对象的数据成员 不允许访问和改变值 可以访问,但不可以改变值

(2)如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数,而不能调用普通的成员函数。常成员函数是常对象的唯一的对外接口,这是C++从语法机制上对常对象的保护。

(3)常成员函数不能更新对象的数据成员,也不能调用该类中的普通成员函数,这就保证了在常成员函数中绝对不会更新数据成员的值。

-------------The End-------------
0%