函数声明中加入const的作用??
如void GetClientRect( LPRECT lpRect ) const;
这样的声明是起到什么作用??
问题点数:20、回复次数:9Top
1 楼vcmute(BCare4 H1Rest Good9!)回复于 2005-06-01 12:33:46 得分 0
const成员函数,即不修改对象中任何一个比特(bit)Top
2 楼WuOu(天堂*蓝珀湖*仰音*诚彦)回复于 2005-06-01 12:37:57 得分 0
const成员函数,即函数的返回值不可修改。Top
3 楼CCCPVSUSA(红色海军)回复于 2005-06-01 13:07:02 得分 0
上面的那个函数是void的,难道返回值还可以修改么?
难道不加const的返回值可以修改??Top
4 楼wanshi_53(幻相)回复于 2005-06-01 13:29:40 得分 8
如果一个成员函数的不会修改数据成员,那么最好将其声明为const,因为const成员函数中不允许对数据成员进行修改,如果修改,编译器将报错,Top
5 楼Microsnow(冰火)回复于 2005-06-01 14:22:46 得分 8
任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。Top
6 楼CCCPVSUSA(红色海军)回复于 2005-06-02 09:53:44 得分 0
询问下上面说的数据成员是指什么??Top
7 楼lovebai(学习学习在学习,菜菜菜真是菜)回复于 2005-06-02 10:20:01 得分 0
就是成员变量啊Top
8 楼uoyevoli(爱什么呢?www.FARPROC.com)回复于 2005-06-02 10:50:44 得分 4
第一,这样的const只能添加在类成员函数上,非成员函数不能用!!
第二,这个const对外界声明在这个成员函数里,我不会修改所在类的成员变量。
第三,只有const函数可以被const函数调用。如果你这个函数不加cosnt,在另外的一个cosnt函数里是不能调用该函数的(使用函数指针,强制转换不在此讨论之列)。Top
9 楼uoyevoli(爱什么呢?www.FARPROC.com)回复于 2005-06-02 10:52:52 得分 0
对第二的补充:
如果你在这个函数里修改了所在类的任何成员变量,编译器就会报错!
第三也一样。Top




