网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

C++内联函数

内联函数和普通函数的区别:

网站建设哪家好,找创新互联公司!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了武义免费建站欢迎大家使用!

普通函数在内存上只有一份,任何地方在调用她的时候分3步:

①:找出这个函数

②:执行此内联函数

③:返回结果(可以是void),结束此函数,继续执行此函数下面的代码

但是内联函数的调用步骤和不同函数是以一样的 , 因为他在编译的时候就不一样:

如何编译:

如果此函数是内联函数,那么在编译的时候,只要是此函数被调用的地方,编译器都会copy一份此函数放入这个地方。所以,内联函数的执行,就没有不同函数那么多的步骤,直接就执行了。

这样的好处是效率是比较高的,调用的地方多了 , 那么copy的次数也多,那样占用的内存也多。

来一个简单的内联:

#include 
using namespace std;
inline void fun1()
{
    cout << "这是内联函数" << endl;
}
int main()
{
    fun1();
    return 0;
}

解析:

申明内联函数需要用到关键字 : inline

另外需要注意的地方:

①:函数申明(有申明)以及其实现都需要使用inline关键字

#include 
using namespace std;
inline void fun1();
inline void fun1()
{
    cout << "这是内联函数" << endl;
}
int main()
{
    fun1();
    return 0;
}

②:类内定义-类外实现都需要使用inline关键字

#include 
using namespace std;
class InlineC
{
public:
    inline void fun();
};
inline void InlineC::fun()
{
    cout << "这是内联函数" << endl;
}
int main()
{
    InlineC *in = new InlineC;
    in->fun();
    delete in;
    return 0;
}

内联函数和宏相似,都是copy,但是他比宏要安全

举个例子:

#include 
using namespace std;
#define SUM(x) x*x
class InlineC
{
public:
    inline void fun();
};
inline void InlineC::fun()
{
    cout << "这是内联函数" << endl;
}
int main()
{
    InlineC *in = new InlineC;
    in->fun();
    delete in;
    cout << "--------------------------------------" << endl;
    cout << SUM(1+3) << endl;
    return 0;
}

结果:

C++ 内联函数

并没有得到结果 16 。

宏的严谨性没inline高。

最后 , 一个默认 : 把inline的申明及实现写在head里面。


文章标题:C++内联函数
本文路径:http://bjjierui.cn/article/piddog.html

其他资讯