在C++中,只有被声明为const的成员函数才能被一个const类对象调用。 要声明一个const类型的类成员函数,只需要在成员函数参数列表后加上关键字const,例如, 在类体之外定义const成员函数时,还必须加上const关键字,例如 若将成员成员函数声明为const,则该函数不允许修改类的数 ...
分类:
编程语言 时间:
2018-03-09 16:16:30
阅读次数:
195
从成员函数说起 在说const成员函数之前,先说一下普通成员函数,其实每个成员函数都有一个隐形的入参:T *const this。 const成员函数 声明形式是:int getValue() const; 编译器内部实现如下 表示this指针指向的内容是不可改变的,所以当试图修改val时会编译报错 ...
分类:
其他好文 时间:
2018-02-26 23:24:21
阅读次数:
184
可变数据成员: 有时我们希望能修改某个类的数据成员,即使是在一个 const 成员函数内。可以通过在变量的声明中加入 mutable 关键字来声明一个可变数据成员。mutable 是为突破 const 的限制而设置的。被 mutable 修饰的变量将永远处于可变状态中,即使是在一个 const 成员 ...
分类:
其他好文 时间:
2017-12-26 00:46:03
阅读次数:
153
记住从右往左读,左边的修饰右边的。 在*之前表示const修饰数据,是底层const,数据不可以修改; 在*之后表示const修饰这个指针,是顶层const,指针的指向不可以修改。 1、const成员函数 两个成员函数如果只是常量性不同,可以被重载。(函数名相同,内容不一样) 在类里面,把一个成员函 ...
分类:
其他好文 时间:
2017-12-10 21:25:28
阅读次数:
153
一、概念 当const在函数名前面的时候修饰的是函数返回值,在函数名后面表示是常成员函数,该函数不能修改对象内的任何成员,只能发生读操作,不能发生写操作。 二、原理: 我们都知道在调用成员函数的时候编译器会将对象自身的地址作为隐藏参数传递给函数,在const成员函数中,既不能改变this所指向的对象 ...
分类:
编程语言 时间:
2017-10-14 23:36:24
阅读次数:
318
参考: http://www.weixueyuan.net/view/6348.html 总结: const成员变量的初始化只有唯一的一条途径:参数初始化表。 const成员函数可以使用类中的所有成员变量,但是不能修改变量的值。 而普通的成员函数不能访问常对象的成员变量,其它的成员变量都可以访问,普 ...
分类:
编程语言 时间:
2017-09-11 15:06:47
阅读次数:
218
为什么使用const?採用符号常量写出的代码更easy维护;指针经常是边读边移动,而不是边写边移动;很多函数參数是仅仅读不写的。const最常见用途是作为数组的界和switch分情况标号(也能够用枚举符取代),分类例如以下: 常变量: const Type 变量名 或 Type const 变量名 ...
分类:
编程语言 时间:
2017-08-16 18:20:08
阅读次数:
183
1.尽量使用const修饰不会赋值操作的变量,防止 "无意义行为" 2.const成员函数遵守: bitwise constness 法则(只要函数内部不改变成员变量的,都是允许const修饰函数的) 3.如果某些成员在const函数内部总是会被改变 可以在变量声明处添加 “mutable”声明为多 ...
分类:
其他好文 时间:
2017-07-29 20:21:42
阅读次数:
112
本文为senlie原创。转载请保留此地址:http://blog.csdn.net/zhengsenlie Item 31 经验:避免返回handles(包含 references、指针、迭代器)指向对象内部。遵守这个条款可添加封装性。 帮助 const 成员函数的行为像个 const。并将发生“虚 ...
分类:
编程语言 时间:
2017-06-30 22:18:29
阅读次数:
160
class A; 类成员: 1.函数成员 构造函数:一种特殊的成员函数,不能声明为const 的 常量指针this:this类型为“A *const”,总是指向调用成员函数的“这个”对象; const成员函数:用于修改隐式this指针的类型,修改后this指针类型为“const A *const”。 ...
分类:
编程语言 时间:
2017-06-12 23:49:17
阅读次数:
230