C++面试复习

本文详细探讨了C++中的核心概念,包括malloc/free与new/delete的区别、内联函数的优缺点、引用与指针的区别、对象的创建销毁过程、C++中的const特性、拷贝构造与深浅拷贝、静态成员、单例模式、智能指针以及多态等面试常考知识点,旨在帮助C++开发者准备面试。
摘要由CSDN通过智能技术生成

malloc/free 与 new/delete 区别

malloc/free new/delete
身份 函数 运算符/关键字
返回值 void* 带类型的指针
参数 字符个数(手动计算) 类型,自动计算字节数
失败 返回NULL 抛异常 std::bad_alloc
构造/析构 不调用 自动调用
初始化 不能初始化 可以初始化指定的值
头文件 包含头文件 直接使用

什么是内联函数

内联函数也会被翻译成二进制指令,调用语句不会生成跳转语句,而直接把函数的二进制指令直接替换调用语句,这样就没有跳转也没有返回,而是直接执行被调函数,我们把这种函数叫内联函数。

隐式内联和显式内联

​ 显示内联:在函数的返回值前面添加 inline 该函数就会以内联机制调用,不是所有的编译器都支持,我们现在使用的g++和gcc就不支持。

隐式内存:结构、联合、类的成员函数会自动被当作内联函数处理。

内联的优缺点:

​ 节约了函数传参、跳转、返回的时间,提高代码运行速度。
​缺点:
​ 当内联函数在多个位置被调用,那么该的二进制指令就被拷贝了多份,就样就产生了冗余,因此代码增加导致可执行文件增大。
​ 1、内容简单且会频繁调用的函数(一次调用会被执行到多次),内容多且极少被调用到的函数不适合内联,因为它节约的时间弥补不了牺牲的内存。
​ 2、带有递归特性的函数无法内联,编译器会自动忽略inline关键字。

内联函数与宏函数的相同点和不同

​ 相同点:
​ 都是采用空间换取时间的策略来提高程序的运行速度。
​ 不同点:
​ 1、宏函数不是真正的函数&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值