C++八股文(基础知识篇1)

1. C++ 和 C 有什么区别?

C++是C语言的超集,主要区别在于:

  • 编程范式:C是面向过程的,C++支持面向对象、泛型编程和函数式编程
  • 核心特性:C++增加了类、继承、多态、封装、模板、异常处理、命名空间等
  • 内存管理:C用malloc/free,C++用new/delete,并支持构造/析构函数自动管理资源
  • 类型检查:C++的类型检查更严格
  • 标准库:C++有STL容器、算法和迭代器,功能更强大

2. 引用(Reference)与指针(Pointer)有什么区别?

  • 初始化:引用必须在定义时初始化,指针可以先声明后赋值
  • 重新绑定:引用一旦绑定不能改变,指针可以指向不同对象
  • 空值:引用不能为空,指针可以是nullptr
  • 语法:引用使用更简洁,像操作原变量一样;指针需要解引用操作
  • 内存:引用通常不占额外空间(编译器优化),指针占用内存存储地址
  • 使用场景:引用常用于函数参数传递,指针更灵活,适合动态内存和数据结构

3. 深拷贝与浅拷贝有什么区别?

  • 浅拷贝:只复制对象的值,如果有指针成员,只复制指针地址,不复制指针指向的内容。多个对象共享同一块内存,析构时会导致重复释放
  • 深拷贝:不仅复制对象的值,还会为指针成员重新分配内存并复制内容。每个对象独立管理自己的资源
  • 默认行为:编译器生成的默认拷贝构造函数和赋值运算符执行浅拷贝
  • 何时需要深拷贝:当类中有指针成员、动态分配的资源时,需要自定义深拷贝

4. 什么是构造函数和析构函数?

  • 构造函数:对象创建时自动调用,用于初始化对象。函数名与类名相同,无返回值。可以重载,支持默认参数和初始化列表
  • 析构函数:对象销毁时自动调用,用于清理资源(释放内存、关闭文件等)。函数名是~加类名,无参数无返回值,不能重载
  • 调用时机:栈对象离开作用域时、delete堆对象时、程序结束时全局对象销毁
  • 虚析构函数:基类析构函数应该是虚函数,确保通过基类指针删除派生类对象时正确调用析构函数

5. 如何定义常量(const)?

  • 常量变量const int MAX = 100; 必须初始化,不能修改

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

C++八股文全集 文章被收录于专栏

本专栏系统梳理C++技术面试核心考点,涵盖语言基础、面向对象、内存管理、STL容器、模板编程及经典算法。从引用指针、虚函数表、智能指针等底层原理,到继承多态、运算符重载等OOP特性从const、static、inline等关键字辨析,到动态规划、KMP算法、并查集等手写实现。每个知识点以面试答题形式呈现,注重原理阐述而非冗长代码,帮助你快速构建完整知识体系,从容应对面试官提问,顺利拿下offer。

全部评论
点赞 回复 分享
发布于 昨天 09:10 上海

相关推荐

2025-12-16 17:17
门头沟学院 产品经理
烤点老白薯:他第二句话的潜台词是想让你帮他点个瑞幸或者喜茶啥的
mt对你说过最有启发的一...
点赞 评论 收藏
分享
评论
4
2
分享

创作者周榜

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