c/c++最常见的16个面试题

本文汇总了C/C++面试中常见的16个问题,包括C中static的作用、const的用途、C与C++定义常量的区别、C++中的引用与指针、内存分配方式、new/delete与malloc/free的区别等。深入探讨了C++的多态性、动态特性、封装、RTTI、拷贝构造函数等概念,是程序员面试的重要参考资料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

目录

 

1. C中static有什么作用

  2.C++中const有什么用?

  3. C与C++各自是如何定义常量的?有什么不同?

  4. 既然C++中有更好的const为什么还要使用宏?

  5. C++中引用和指针的区别?

  6. 说一说C与C++的内存分配方式?

  7. new/delete 与 malloc()/free() 的区别?

  8. #include和#include"a.h" 有什么区别?

  9. 在C++ 程序中调用被 C编译器编译后的函数,为什么要加 extern "C"?

  10. C++中的什么是多态性? 是如何实现的?

  11. 什么是动态特性?

  12.什么是封装?C++中是如何实现的?

  13. 什么是RTTI?

  14. 什么是拷贝构造函数?

  15. 什么是深浅拷贝?

  16.面向对象程序设计的优点?


1. C中static有什么作用


  (1)隐藏。 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性,故使用static在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。
  (2)static的第二个作用是保持变量内容的持久。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量。
  (3)static的第三个作用是默认初始化为0.其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0×00,某些时候这一特点可以减少程序员的工作量。



  2.C++中const有什么用?


  不要一听到const就说是常量,这样给考官一种在和一个外行交谈的感觉。应该说const修饰的内容不可改变就行了, 定义常量只是一种使用方式而已,还有const数据成员,const参数, const返回值, const成员函数等, 被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。



  3. C与C++各自是如何定义常量的?有什么不同?


  C中是使用宏#define定义, C++使用更好的const来定义。
  区别:
  1)const是有数据类型的常量,而宏常量没有,编译器可以对前者进行静态类型安全检查,对后者仅是字符替换,没有类型安全检查,而且在字符替换时可能会产生意料不到的错误(边际效应)。
  2)有些编译器可以对const常量进行调试, 不能对宏调试。



  4. 既然C++中有更好的const为什么还要使用宏?


  const无法代替宏作为卫哨来防止文件的重复包含。



  5. C++中引用和指针的区别?


  引用是对象的别名, 操作引用就是操作这个对象, 必须在创建的同时有效得初始化(引用一个有效的对象, 不可为NULL)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值