搜狗2016 C++笔试题:重载与多态策略分析

4 下载量 81 浏览量 更新于2024-09-03 收藏 96KB PDF 举报
本文档提供了搜狗2016年C++研发工程师笔试题,主要考察了面试者对C++面向对象编程基础和策略思维的理解。首先,问题1涉及了重载和多态的概念。虽然选项A认为子类的函数会覆盖父类的同名方法,但如果没有声明为虚函数,实际上会调用父类的方法,因此A选项错误。重载不仅限于子类方法,C选项错误。正确的解释是重载可以在一般函数中使用,但多态主要通过虚函数实现。第二个问题是关于策略游戏中的策略选择,当两堆硬币分别为12和13时,小明应该先从数量较多的一堆拿走一个,使得两堆硬币保持相等,这样无论对方如何操作,小明总能确保自己最后获胜,因此D选项错误,正确答案是C。 第三个问题考察了构造函数和拷贝操作的调用顺序。在给出的代码片段中,第10行`b2=func(b1);`将会执行以下操作: 1. 由于`func(b1)`返回一个`B`类型的对象,它会隐式调用`const B&`的拷贝构造函数,创建一个新的临时对象,用于存储`func`的结果。 2. 然后这个临时对象被赋值给`b2`,这会进一步触发拷贝构造函数,用于将临时对象复制到`b2`。 因此,第10行的正确答案是A,即一次默认构造函数(用于临时对象的创建),一次拷贝构造函数(用于`func(b1)`的结果赋值给`b2`),以及一次拷贝赋值运算符`operator=`(用于将临时对象的值赋给`b2`)。 整个题目旨在测试应聘者的C++语言基础、逻辑推理能力和对内存管理的理解,特别是对于面向对象编程的深入理解。解答这些问题需要具备扎实的编程功底和实践经验。