2021最常见的C++的面试题集锦

格桑2021-12-27 14:10

  面试就像打一场仗,打仗的时候,要有很好的武器,那么面试题就是最好的武器,今天小编就为大家准备了C++的面试题,希望对大家有所帮助。

研究生考点怎么安排的

  1、 C++的四种强制转换

  类型转化机制可以分为隐式类型转换和显示类型转化(强制类型转换)

  (new-type) expression

  new-type (expression)

  隐式类型转换比较常见,在混合类型表达式中经常发生;四种强制类型转换操作符:

  static_cast、dynamic_cast、const_cast、reinterpret_cast

  1)static_cast :编译时期的静态类型检查

  static_cast < type-id > ( expression )

  该运算符把expression转换成type-id类型,在编译时使用类型信息执行转换,在转换时执行必要的检测(指针越界、类型检查),其操作数相对是安全的

  2)dynamic_cast:运行时的检查

  用于在集成体系中进行安全的向下转换downcast,即基类指针/引用->派生类指针/引用

  dynamic_cast是4个转换中唯一的RTTI操作符,提供运行时类型检查。

  dynamic_cast如果不能转换返回NULL

  源类中必须要有虚函数,保证多态,才能使用dynamic_cast

  (expression)

  3)const_cast

  去除const常量属性,使其可以修改 ; volatile属性的转换

  4)reinterpret_cast

  通常为了将一种数据类型转换成另一种数据类型

  2、调试程序的方法

  windows下直接使用vs的debug功能

  linux下直接使用gdb,我们可以在其过程中给程序添加断点,监视等辅助手段,监控其行为是否与我们设计相符

  3、extern“C”作用

  extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。

  4、typdef和define区别

  #define是预处理命令,在预处理是执行简单的替换,不做正确性的检查

  typedef是在编译时处理的,它是在自己的作用域内给已经存在的类型一个别名

  typedef (int*) pINT;

  #define pINT2 int*

  效果相同?实则不同!实践中见差别:pINT a,b;的效果同int *a; int *b;表示定义了两个整型指针变量。而pINT2 a,b;的效果同int *a, b;表示定义了一个整型指针变量a和整型变量b。

  5、volatile关键字在程序设计中有什么作用

  volatile是“易变的”、“不稳定”的意思。volatile是C的一个较为少用的关键字,它用来解决变量在“共享”环境下容易出现读取错误的问题。

  以上就是小编为大家整理发布的“2021最常见的C++的面试题集锦”一文,更多相关内容尽在开课吧广场C++教程频道。

免责声明:本站所提供的内容均来源于网友提供或网络搜集,由本站编辑整理,仅供个人研究、交流学习使用。如涉及版权问题,请联系本站管理员予以更改或删除。
有用1
分享