最近在复习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的子项目。