C++笔试题解析:重载、多态与程序逻辑
版权申诉
178 浏览量
更新于2024-09-09
收藏 610KB PDF 举报
"搜狗2016 C++工程师笔试题及答案.pdf"
这份文档包含了2016年搜狗公司C++工程师笔试题目的详解和答案,主要涉及C++编程语言的基础知识、面向对象特性以及程序设计策略。以下是部分题目解析:
1. 关于重载和多态:
- 重载允许在同一作用域内有多个同名但参数列表不同的函数。题目中提到的父类和子类都有相同方法,参数个数不同,这种情况下,如果使用父类指针调用方法,由于多态性,实际调用的是子类的方法。因此,正确答案是B,即使用父类指针调用父类方法时,实际调用的是子类的方法。
2. 游戏策略问题(博弈论):
- 这是一道与计算机科学中的博弈论相关的题目。当两堆硬币数分别为12和13时,小明可以通过让对手首先取硬币来确保胜利。具体策略是,无论小亮从哪一堆取走多少硬币(1个或2个),小明都可以从另一堆取走相应数量的硬币,使得两堆硬币数相等。这样,最后一堆硬币将由小明取完,他就能获胜。正确答案是C,即安排小亮先取硬币。
3. 编译优化与构造函数:
- 在C++中,编译器可能会进行NRVO(Named Return Value Optimization,命名返回值优化),避免不必要的复制。在提供的代码中,`func`函数返回一个`rhs`的副本,但在第10行的赋值操作中,由于NRVO可能生效,编译器可能会直接将`func`内部的`rhs`对象构造到`b2`的位置,从而避免了临时对象的拷贝构造。但如果没有NRVO,将会有一次拷贝构造函数调用、一次拷贝赋值运算符`operator=`的调用以及一次析构函数调用。正确答案是D。
4. fork()系统调用:
- `fork()`是创建新进程的系统调用。在这个例子中,`main`函数中创建了一个子进程。在父进程中,`num`变量自增1,而在子进程中,`num`的值不变。由于进程间的独立性,每个进程都有自己的内存空间,所以`num`的地址虽然相同,但值可能不同。因此,输出结果会根据进程(父进程或子进程)的不同而不同。题目要求给出正确答案,但未提供选项,因此无法直接给出答案。
这些题目涵盖了C++的面向对象特性、程序设计策略、编译优化以及操作系统进程管理等多个方面,是评估C++工程师能力的良好素材。通过解答这些题目,开发者可以巩固和提升自己的C++编程技能。
2008-11-14 上传
2021-08-30 上传
点击了解资源详情
2021-04-10 上传
661 浏览量
346 浏览量
点击了解资源详情
java李杨勇
- 粉丝: 36w+
- 资源: 3180
最新资源
- 黑板风格计算机毕业答辩PPT模板下载
- CodeSandbox实现ListView快速创建指南
- Node.js脚本实现WXR文件到Postgres数据库帖子导入
- 清新简约创意三角毕业论文答辩PPT模板
- DISCORD-JS-CRUD:提升 Discord 机器人开发体验
- Node.js v4.3.2版本Linux ARM64平台运行时环境发布
- SQLight:C++11编写的轻量级MySQL客户端
- 计算机专业毕业论文答辩PPT模板
- Wireshark网络抓包工具的使用与数据包解析
- Wild Match Map: JavaScript中实现通配符映射与事件绑定
- 毕业答辩利器:蝶恋花毕业设计PPT模板
- Node.js深度解析:高性能Web服务器与实时应用构建
- 掌握深度图技术:游戏开发中的绚丽应用案例
- Dart语言的HTTP扩展包功能详解
- MoonMaker: 投资组合加固神器,助力$GME投资者登月
- 计算机毕业设计答辩PPT模板下载