华为OD技术面八股文_C++_01
文章目录
- C语言和C++的区别
- C++11引入哪些新特性
- 什么是面向对象?面向对象的三大特性
- malloc和new的区别
- delete和free的区别
- delete和delete[]的区别
- 什么是虚函数?什么是纯虚函数
- 什么是虚函数表?什么是虚函数指针?
- 介绍一下虚函数实现机制
- 构造函数和构析函数能不能写为虚函数,为什么
- 说一下构造、析构函数的调用顺序
C语言和C++的区别
- C++有新增的关键字和语法,还允许自定义命名空间。
- C++新增类的概念,C语言中只有struct的概念。C++中添加访问权限概念,struct 的默认访问权限和继承权限都是 public,但是 class 的默认访问权限和默认继承权限都是 private.
- C++引入了类、封装、继承、多态、模板、重载、异常处理机制等特性。而C没有
- C使用
malloc/free函数,C++除了这些外,还支持更高级的new/delete关键字。 - C语言更看重面向过程,C++注重面向对象。
- C++是基于C语言发展而来,因此C++基本完全兼容C语言。
- 由于C+面向对象特性和支持一些高级特性,相比C语言,在某些情况下会带来额外开销,性能差一点。
C++11引入哪些新特性
- 自动类型判断:引入了auto关键字,可以根据变量初始化表达式的类型自动推断变量的类型,使得代码更具灵活性和可读性。
- 范围for循环: 通过for (element : container)语法,允许直接遍历容器中的每个元素,简化了迭代操作,减少了代码量。
- 智能指针:std::shared_ptr和std::unique_ptr等智能指针类的引入,帮助管理动态分配的内存,避免内存泄漏和悬挂指针等问题。