设为首页 加入收藏

TOP

3.3.3 const成员函数
2013-10-07 15:31:40 来源: 作者: 【 】 浏览:74
Tags:3.3.3 const 成员 函数

3.3.3   const成员函数

如果一个成员函数不需要直接或间接(通过调用其他的成员函数来改变其对象状态)地改变该函数所属对象的任何数据成员,那么最好将这个成员函数标记为const。

例3-15

 

本例中,由于get成员函数不需要改变类C的任何数据成员,因此我们将get成员函数标记为const。请注意,定义一个const成员函数时,const关键字出现在参数列表与其函数体之间。

由于get成员函数不更改任何数据成员,因此我们称这种类型的函数为只读函数。将成员函数标记为const可以预防对该函数所属对象的数据成员的误写,同时有些编译器还可对这种情况进行一些优化。

成员函数set不能标记为const,因为它通过设置数据成员num的值而改变了对象的状态。如果成员函数set被错误地标记为const,则编译器将产生一条严重错误。

一个const成员函数仅能调用其他const成员函数,因为const成员函数不允许直接或间接地改变对象的状态,而调用非const成员函数可能会间接地改变对象的状态。

例3-16

 

本例类C包含一个错误。因为m1标记为const,因此m1不能调用非const成员函数m2,因此,编译器将发出一条严重错误。如果允许m1调用非const成员函数m2,由于m2设置了数据成员dm的值,m1会间接地改变对象的状态,这是不允许的。

例3-17

 
 
本例展示了const关键字的三种不同用法。在成员函数set中,因为set不改变string类型参数n,n被标记为const。成员函数get返回数据成员name的一个const型引用,此处的const表明谁也不能通过这个引用来修改数据成员name的值。成员函数get本身被标记为const,因为get不会改变类C 惟一的数据成员name的值。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇3.4.2 示例程序的输出 下一篇3.4.4 类的实现

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python中文网 - 人生 (2025-12-24 18:49:47)
·【整整648集】这绝对 (2025-12-24 18:49:44)
·Python超详细一条龙 (2025-12-24 18:49:42)
·【超详细】JDK 下载 (2025-12-24 18:19:32)
·Java_百度百科 (2025-12-24 18:19:29)