C++基础语法面试题

C++中的引用和指针有什么区别?

答案:

  • 定义方式不同 引用是变量的别名,定义时必须初始化:int& ref = var;指针是存储地址的变量,可以不初始化:int* ptr;
  • 是否可以为空 引用不能为空,必须绑定到一个对象指针可以为空(nullptr),可以不指向任何对象
  • 是否可以改变指向 引用一旦绑定就不能改变指向指针可以随时改变指向不同的对象
  • 内存占用 引用不占用额外内存(编译器优化)指针需要占用内存存储地址(32位系统4字节,64位系统8字节)
  • 使用方式 引用使用时和普通变量一样:ref = 10;指针需要解引用:*ptr = 10;
  1. const关键字的作用有哪些?

答案:

  • 修饰变量 定义常量,不可修改:const int MAX = 100;保护数据不被意外修改
  • 修饰指针 常量指针:const int* ptr; 指向的内容不可变指针常量:int* const ptr; 指针本身不可变常量指针常量:const int* const ptr; 都不可变
  • 修饰函数参数 防止函数内部修改参数:void func(const int& param);提高效率,避免拷贝大对象
  • 修饰成员函数 表示该函数不会修改成员变量:int getValue() const;const对象只能调用const成员函数
  • 修饰返回值 防止返回值被修改:const string& getName();
  1. static关键字的作用有哪些?

答案:

  • 修饰局部变量 延长生命周期到程序结束只初始化一次,保持上次的值存储在静态存储区
  • 修饰全局变量/函数 限制作用域在当前文件内实现文件级别的封装避免命名冲突
  • 修饰类成员变量 所有对象共享同一份数据不属于某个具体对象必须在类外初始化
  • 修饰类成员函数 不需要对象即可调用:ClassName::staticFunc();只能访问静态成员变量和静态成员函数没有this指针
  1. C++中的四种类型转换是什么?

答案:

  • static_cast 用于基本数据类型转换:int a = static_cast<int>(3.14);用于有继承关系的类指针转换(向上转换安全)编译时检查,相对安全
  • dynamic_cast 用于多态类型的安全向下转换运行时类型检查,失败返回nullptr(指针)或抛异常(引用)需要虚函数表支持(RTTI)
  • const_cast 用于去除const属性:const_cast<int*>(const_ptr);唯一能改变const属性的转

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

C++ 常考面试题总结 文章被收录于专栏

本专栏系统梳理C++方向, 大中厂高频高频面试考点 , 内容皆来自真实面试经历,从基础语法、内存管理、STL与设计模式,到操作系统与项目实战,结合真实面试题深度解析,帮助开发者高效查漏补缺,提升技术理解与面试通过率,打造扎实的C++工程能力.

全部评论
有空就看看,加强记忆
点赞 回复 分享
发布于 02-26 21:25 广东

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务