新角度解读C++内联函数的前世今生(下)(详细必看)

特性:

   书接上文,在下篇我们主要谈谈inline函数的某些特性。

1.inline函数对于编译器只是一种建议,不同编译器关于inline函数的实现机制可能有些不同。

一般来说:将函数规模较小(即函数并不是很长,具体并没有一种准确的说法,取决于编译器内部实现),不是递归,且频繁调用的函数采用inline修饰,否则编译器会忽略掉inline特性。这里我截取了C++ primer中关于inline的建议。关于这里的证明读者可以通过VS调试中反汇编自行尝试。

 2.inline函数不建议将声明和定义分离,分离会导致链接错误。因为inline函数被展开,就不会存在函数地址,在符号表中无法找到,导致链接失效,如图所示:

 

 最后会报出链接错误:

 以上就是关于C++中内联函数的所有内容,对于内联函数知道以上用法即可,至于更为细致的没有必要再去追究,我也就不再赘述了。我想说的是,在C++中学习到内联函数意味着你已经开始真正接触到C++的核心,以后的路还很漫长,不要放弃也不要害怕,关注我,一起学习C++,我们共同进步。


 C++小百科之妙写循环(壹):

想必大家对于for循环都已经非常熟悉了,我就不必多说。这里我想教大家一种基于auto关键字for的简洁写法,这里会用到部分C++11的特性。

#include<iostream>
using namespace std;
int main(void)
{
    int a[] = { 1,2,3,4 };
    for (auto e : a)
        cout << e << ' ';
    cout << "\n";
    for (auto& e : a)
    {
        e *= 2;
        cout << e << ' ';
    }
    cout << "\n";
    return 0;
}

 如图所示,我们只需按照for(auto  变量名 :  数组名)的格式去书写,就能拿到数组的每一个值,想要对原数组的值进行更改,只需改为引用即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值