C++语言学习笔记:常对象和常引用

对于既需要共享、又需要防止改变的数据应该声明为常量。

一、常对象

1、声明对象时用const修饰,称之为常对象。

const 类型说明符 对象名;

2、常对象的数据成员值在对象的整个生存期间不能被改变。常对象必须进行初始化,而且不能被更新。

3、在定义一个变量或常量时为它指定初值叫作初始化,而在定义一个变量或常量以后使用赋值运算符修改它的值叫作赋值。

4、改变对象的数据成员值有两个途径:一是通过对象名访问其成员对象,由于常对象的数据成员都被视同为常量,这时语法会限制不能赋值。二是在类的成员函数中改变数据成员的值,然而几乎无法预料和统计哪些成员函数会改变数据成员的值,对此语法只好规定不能通过常对象调用普通的成员函数。

二、常成员函数

1、使用const关键字修饰的函数为常成员函数。

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

2、const是函数类型的一个组成部分,因此在函数的定义部分也要带const关键字。

3、如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,而不能调用其他成员函数。

4、无论是否通过常对象调用常成员函数,在常成员函数调用期间,目的对象都被视同为常对象。

5、const关键字可以用于对重载函数的区分,如果仅以const关键字为区分对成员函数重载,那么通过非const的对象调用该函数,两个重载的函数都可以与之匹配,这时编译器将选择最近的函数——不带const关键字的函数。

6、对于无须改变对象状态的成员函数,都应当使用const。

三、常数据成员

1、如果在一个类中使用const说明了常数据成员,那么任何函数中都不能对该成员赋值。构造函数对该数据成员进行初始化,就只能通过初始化列表。

2、类成员中的静态变量和常量都应当在类体之外加以定义。

四、常引用

1、如果在声明引用时用const修饰,被声明的引用就是常引用。

const 类型说明符 &引用名

2、常引用所引用的对象不能被更新。如果用常引用做形参,便不会意外地发生对实参的更改。

3、非const的引用只能绑定到普通的对象,而不能绑定到常对象,但常引用可以绑定到常对象。

4、一个常引用,无论绑定到一个普通的对象,还是常对象,通过该引用访问该对象时,都只能把该对象当作常对象。

你可能感兴趣的:(C++语言学习笔记:常对象和常引用)