C++复习(4):有关const的一系列问题

来源:互联网 发布:淘宝店铺金额怎么提现 编辑:程序博客网 时间:2024/06/17 10:05

const是在C++中经常使用的一个关键词,不过它的功能常常令人感觉有些混乱,我在这里总结一下。

1.用const定义变量
用const定义变量就类似于C语言中的用#define进行的宏定义,不过在const是定义一个常变量,占用存储单元,有地址,有数据类型,可以用指针指向。斜体部分都是define宏定义所不具备的。
举例:
const int i = 10;

2.常对象
定义形式:
类名 const 对象名 (实参表);
const 类名 对象名 (实参表);
常对象的定义必须有初值,完成定义之后所有数据成员的值都不能改变,而且只能调用对象的常成员函数。将一个函数变成一个常成员函数只需在函数的实参表后面加上const即可,如:void display () const ;

如果在常对象的数据成员中有一个数据一定要修改则应将其声明为mutable类型,比如:mutable int a;

3.常对象成员
1.常数据成员
定义方式和用法与一般的常变量类似,不过只能通过构造函数的参数初始化表对常数据进行初始化,任何其他函数都不能对常数据成员赋值或改变其值,所以构造函数只能用参数初始化表对常数据成员进行初始化。

2.常成员函数
常成员函数只能引用本类的数据成员,而不能将其改变。
声明格式:
类型名 函数名 (参数表) const;
注意:
常成员函数不能调用另一个非const成员函数。

4.指向对象的常指针
这类指针的指向不变,但所指向对象的值可以变。
定义的一般形式:
类名 * const 指针变量名;

常用常指针作为函数的形参,目的是使其始终指向原来的对象。

5.指向常对象的指针变量
定义格式:
const 类型名 * 变量名;

1.如果一个变量已被声明为常变量只能用指向常变量的指针变量值向它。
2.不能通过此指针变量改变变量的值。
3.在函数中如果形参是指向const型变量的指针,实参可以使const变量的地址也可以是非const变量的地址;形参如果是非const型变量的指针,实参也只能是非const变量的地址。

以上三条中的变量均可换为对象。

对象的常引用
举例:
void fun (const time &t);
这样在函数中无法改变t的值,而且在传参过程中,是将地址传给形参,速度很快。

以上就是有关const的一系列问题。

2017年12月12日11:28:05
写于南京工程学院