C++内联函数,auto指针,初识类与对象

本文介绍了C++的内联函数,强调其用于提高运行效率,但可能导致程序体积增大。接着讲解了auto智能指针,用于简化变量声明并自动推导类型,同时说明了其在数组和形参上的限制。最后,简述了C++中的类与对象,包括面向对象编程的特点和类的组成部分。

C++内联函数,auto指针,初识类与对象

C++内联函数

一.内联函数的概念
以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,此时没有函数压栈的开销,就是不会建立栈帧,可以提升程序的运行效率。如下图:
在这里插入图片描述

二.在C语言中为了小函数避免建立栈帧的消耗,C语言提供了宏函数支持,在预处理阶段进行展开,那么C语言已经解决了栈帧消耗的问题,为什么C++还要提供inline函数呢?
a: C语言定义的宏函数不支持调试
b: 宏函数的语法复杂,容易出错
c: 宏函数没有类型安全检查

三.那么C++的inline函数这么好,为什么不是所有的函数都使用内联函数呢?
这里假设要定义一个sort()的排序函数,有100行指令。如果此时只定义普通的函数并调用,如果有十个地方调用它,则总计需要110行指令。而如果使用内联函数则在调用它的地方会对这个sort()函数内部进行展开,那么这个时候总计需要的指令就是1000行(因为会在调用的地方展开所以就不需要调用语句了)。指令变多就意味着编译出来的可执行程序变大,执行程序内存消耗变多,软件使用者体验变差。

四.总结
1.内联是一种以空间换时间的做法,省去了调用函数的开销,所以代码很长或者有循环递归的函数不宜使用内联函数。

2.inline函数对于编译器而言只是一种建议,编译器会自动优化,如果定义位inline的函数体内有递归等语句,编译器优化的时候会自动忽略内联函数。

3.inline不建议声明和定义分离,分离会导致链接错误,因为inline被展开,就没有函数地址了,链接就会找不到。(例如不建议在.h文件中进行声明,在.cpp文件中进行定义)。

auto智能指针

一.auto的定义
auto是C++的智能指针,当数据类型很冗长时,用auto声明变量,它会根据你

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值