一直很讨厌这个C++ primer,当时第四版就不喜欢,如今出了第五版,抱着试一试态度,结果还是很垃圾。 比如7.1 章节,引入 const 成员函数 时,讲的好生硬好生硬!!! 为何凭空说要吧this 绑定到一个常量对象上?
而且翻译的也是很拗口,看一句话得要反应半天才明白字面所表达的意思!
立马去翻了C++设计者之一的书《C++编程思想》(英文版,据说中文版翻译的不好)
里面就讲了 const 成员函数的来龙去脉:
首先是像定义普通类型的const 变量一样:
const int a = 5; //表示这个a定义后就不想改变了,那么,定义一个const类对象呢?
const classType A;//怎么保证这个对象A 里面的数据成员不会变呢?
只有设计出一个const成员函数,这个成员函数保证不修改对象的的数据成员。而且,const对象只能调用这个const成员函数,千万不能调用别的了哦~ 不然报错哦~
而函数前加的const 仅仅表示函数返回值是个const,满足不了我们设计要求,所以就在函数参数列表后面加个const 表示这是个const 成员函数,保证不修改数据成员,甚至在编译阶段发现代码企图修改数据成员,编译器就果断报错!
这样的解释才好理解,C++ primer的作者硬是往this 指针上靠,来解释这个const 成员函数,简直就像个小学生在牵强附会!!!