考试网 >> IT认证 >> 等级 >> 二级考试 >> C++里const关键字相关问题

C++里const关键字相关问题

发布时间:2006-07-25 12:10     点击:
分页:上一页  1 [2] 3 4 5 6 7  下一页

2. const 成员函数

描述: void Class::MemberFun() const {}; //此时这个const修饰的this所有类成员变量都不允许在这个函数体作用后被修改。这在设计上会带来一些好处,能防止你意外的处理带来的问题。

总结:

<1> const 常量 一般编译器不会分配空间只是维护一张表。而当extern 外部引用这个常量或者“&”对这个常量取地址时,编译器才会为其分配地址。Const本身的机制比较复杂。

<2> const 记忆法则 const修饰后面一个最近的名称。我曾初学的时候被const 修饰搞的糊里糊涂,后来慢慢的总结我觉得这样理解最容易的。

[Page: ]



例子: const int I; 此时const仅仅修饰int 表明 I不是一个常量但是I的内容是常量。因为c/c++表达 对I的改变就是对I内容的改变所以 I也类似一个const。大家不妨可以用指针const修饰试试理解会有帮助的我想。

<3> 对于所有非const 类型可以无条件转化为 const类型,但是后者不能自动转化为前者除非显式的强制转化去掉const性。这样做是有意义的,因为const类型是非const的一个子集是一种特殊,由普遍转化为特殊是合理的,就象模板特化,继承的向上映射都是有意义的。

<4> 记住所有const修饰的内容并不是永远不可改变,如果人为的强制转化编译器是不会提醒的。因为它没有义务这么做,所以我们对其转化时要小心。

<5> 在const类成员函数处理时,我们引入了mutable修饰类成员变量,经过其修饰的成员变量可以在const类成员函数中被修改,编译器是允许的。而其他未被mutable修饰的成员还是按照const规则不能在const成员函数中被改变。

函数后面加“const”与不加是两个不同函数,如:

#include 



using namespace std;
分页:上一页  1 [2] 3 4 5 6 7  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有