【 C++初阶语法(2)】

本文介绍了C++中的内联函数,包括概念、特性和与C语言宏的区别。接着讨论了C++11引入的auto关键字,详细阐述了其用途和限制,并提到了范围for循环的使用。最后讲解了C++11的 nullptr 作为指针空值的改进及其相对于C++98的优势。
摘要由CSDN通过智能技术生成

目录

一. 内联函数

1.概念

2. 特性

3.C语言的宏与C++的inline

二、auto关键字(C++11)

1. auto简介

2.auto的使用细则

3.auto不能推导的场景

4.基于范围的for循环(C++11)

5. 范围for的使用条件

三、 指针空值nullptr(C++11)

1. C++98中的指针空

一. 内联函数

1.概念

inline 修饰 的函数叫做内联函数, 编译时 C++ 编译器会在 调用内联函数的地方展开 ,没有函数调用建立栈帧的开销,内联函数提升程序运行的效率。

如果在上述函数前增加inline关键字将其改成内联函数,在编译期间编译器会用函数体替换函数的调用。

查看方式:
1. release模式 下,查看编译器生成的汇编代码中是否存在 call Add
2. debug模式 下,需要对编译器进行设置,否则不会展开 ( 因为 debug模式 下,编译器默认不会对代码进行优化,以下给出vs2013 的设置方式 )

inline在调用的地方,直接进行展开

 

2. 特性

1. inline 是一种 以空间换时间 的做法,如果编译器将函数当成内联函数处理,在 编译阶段,会用函数体替 换函数调用。
缺陷: 可能会使目标文件变大
优势: 少了调用开销,提高程序运行效率

2. inline对于编译器而言只是一个建议,不同编译器关于inline实现机制可能不同,一般建议:将函数规模较小不是递归、频繁调用的函数采用inline修饰,否则如果定义为inline的函数体内部实现代码指令长度比较长(10 行左右,不同编译器不同)/递归等,编译器优化时会忽略内联

下图为《

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值