搜狗2017 C++笔试题解析
版权申诉
87 浏览量
更新于2024-07-08
收藏 846KB PDF 举报
"搜狗2017年的C++笔试题包含了面向对象编程、游戏策略以及内存管理等知识点。"
这篇文档中提供的搜狗2017年C++笔试题涉及了多个C++编程的关键概念,包括重载、多态、类的继承、游戏策略以及函数返回值的优化。下面是对这些知识点的详细解释:
1. 重载和多态:
A. 正确的理解是,如果父类和子类都有相同名称但参数不同的方法,在使用父类指针调用时,如果没有声明为虚函数,实际调用的是父类的方法。这是因为C++中的多态性是基于虚函数实现的。选项B和C不正确,因为重载可以在非子类方法中使用,而多态并不局限于子类。D选项也错误,因为A类的成员函数应该声明为public,并且调用成员函数需要使用箭头操作符或点操作符。
示例代码中,`a->test(1.1)`或`(*a).test(1.1)`将调用父类A的方法,如果`test`声明为`virtual`,则会调用子类B的方法,输出2。
2. 游戏策略(动态规划):
这是一个典型的博弈论问题,称为Nim游戏。当两堆硬币数分别为12和13时,小明通过先取一个硬币,使得两堆都变为偶数个,然后通过模仿对手的取法,保证每一轮结束后两堆硬币数相等,从而确保胜利。无论小亮取1个还是2个,小明都能通过在另一堆中取相同数量的硬币达到目的。
3. 编译器优化(NRVO):
NRVO(Named Return Value Optimization,命名返回值优化)是一种编译器优化技术,它避免了在函数返回时创建临时对象的开销。在这段代码中,如果编译器进行了NRVO优化,那么在第6行的`return rhs;`处,编译器可能会直接将`rhs`的值复制到`b2`,跳过中间临时对象的创建。然而,如果不考虑NRVO,那么`func`函数返回一个临时对象,这个临时对象再被赋值给`b2`。
以上就是这份笔试题中涉及到的C++编程核心概念,包括面向对象的特性、游戏策略分析以及编译器优化的影响。理解和掌握这些知识点对于C++开发者来说至关重要。
2016-12-29 上传
661 浏览量
2014-07-09 上传
2021-08-30 上传
点击了解资源详情
2021-11-22 上传
2015-03-03 上传
2021-04-10 上传
点击了解资源详情
苦茶子12138
- 粉丝: 1w+
- 资源: 6万+
最新资源
- JDK 17 Linux版本压缩包解压与安装指南
- C++/Qt飞行模拟器教员控制台系统源码发布
- TensorFlow深度学习实践:CNN在MNIST数据集上的应用
- 鸿蒙驱动HCIA资料整理-培训教材与开发者指南
- 凯撒Java版SaaS OA协同办公软件v2.0特性解析
- AutoCAD二次开发中文指南下载 - C#编程深入解析
- C语言冒泡排序算法实现详解
- Pointofix截屏:轻松实现高效截图体验
- Matlab实现SVM数据分类与预测教程
- 基于JSP+SQL的网站流量统计管理系统设计与实现
- C语言实现删除字符中重复项的方法与技巧
- e-sqlcipher.dll动态链接库的作用与应用
- 浙江工业大学自考网站开发与继续教育官网模板设计
- STM32 103C8T6 OLED 显示程序实现指南
- 高效压缩技术:删除重复字符压缩包
- JSP+SQL智能交通管理系统:违章处理与交通效率提升