《C和C++程序员面试秘笈》中存在的错误
最近在复习C++面试的考点,所以购买了《C和C++程序员面试秘笈》这本书(人民邮电出版社2014.3 ISBN:978-7-115-34113-6)。
书整体上是非常不错的,知识点覆盖比较全面,很符合我的需求。美中不足的是书中的错误有点多。阅读的过程中自己做了一个总结,现在贴上来供大家参考。
总结的形式比较简单,仅供参考。同时限于本人的水平,总结中可能存在一些错误,欢迎指正。
因为我只选择性的看了第1、2、3、5、6、7章(全文共12章),所以本文只列出了这几个章节中存在的错误。
页码 | 面试题编号 | 存在的错误 |
---|---|---|
P15 | 面试题11 | <>只会检查预定义目录,不是首先检查预定义的目录 |
P15 | 面试题12 | Ctrl+C时,不会调用atexit注册的函数,linux 的手册中显示只有normal termination才会调用atexit |
P67 | 面试题17 | 应该第14,15,16编译错误,13行运行时错误 |
P71 | 面试题21 | 第7行后,str[0]指向的是to后面的’\0’,而不是Nanjing后面 |
P85 | 面试题32 | malloc与calloc不是一块与n块的区别,calloc分配的还是一块,只是大小为n*size。本质上没什么区别,相当于malloc的大小为n*sizeof(type) |
P150 | 面试题5 | 应该是将&&替换为& |
P151 | 面试题7 | 运行时间类型信息(RTTI)翻译错误,这里应该为运行时类型信息(RTTI) |
P152 | 面试题8 | 应该为编译器将为你计算常数表达式的值,预处理器只进行文本替换,没有计算。常数表达式的计算是在编译阶段进行的(生成汇编代码时) |
P155 | 面试题13 | 和P25面试题10重复了 |
P171 | 面试题10 | 第25行在函数体内调用父类构造函数是合法的,但是作用仅仅是创建一个A对象,所以B的构造函数会自动调用父类A的无参构造函数,如果A没有无参构造函数,才会编译出错。 |
P173 | 面试题12 | C选项是错误的,静态成员一样受到private控制符的作用 |
P182 | 面试题20 | 应该为析构函数的执行顺序与构造函数相反 |
P195 | 面试题28 | 拷贝构造函数的传入参数必须为const B &b |
P199 | 面试题30 | 拷贝构造函数的传入参数必须为const |
P204 | 面试题32 | C++编译器处理后包含了原函数名,函数参数类型。不是参数数量,也没有返回类型信息,返回值是没有重载的 |
P205 | 面试题34 | 翻译错误,应该为重写(overriding) 重载(overloading) |
P205 | 面试题34 | 只有虚函数能够被覆写(C++没有抽象方法这么一说,也没有虚方法这么一说,作者可能是想说抽象类的方法吧,抽象类的方法也属于虚函数) |
P228 | 面试题7 | 应该为 class Child1 : public Parent 与 class Child2 : public Parent |
P229 | 面试题7 | 文字错误,应该为Parent类的vtbl: Parent::foo1()的地址,Parent::foo2()的地址 (原文为foo1()) |
P235 | 面试题11 | (1)(2)应该选D,因为都是一个指针的大小,这个是和平台相关的,在64bit机器上,结果是8。 |
P242 | 面试题15 | 第(2)个应该为 任何虚拟基类的构造函数按照他们被继承的顺序构造。 |
P252 | 扩展知识:虚函数表 | 这里感觉标题字号弄错了,这个让人感觉很像是面试题24的子项目。 |