内联函数和普通函数之间的区别:
内存中只有一个普通函数的副本,在任何地方调用她都需要执行3个步骤:
①: 找到此功能
②: 执行此内联函数
③: 返回结果(可能为空),结束此函数,继续执行此函数下方的代码
但是,内联函数的调用步骤与不同函数相同,因为它们在编译时不同:
如何编译:
如果此函数是嵌入式函数,则编译器将复制此函数的副本,并在每次调用时将其放置在此位置. 因此,内联函数的执行步骤不像其他函数那样多,而是直接执行.
这样做的优点是效率相对较高c++ 内联函数,有更多的调用位置,然后有更多的副本,并且占用更多的内存.
一个简单的内联:
#include <iostream> using namespace std; inline void fun1() { cout << "这是内联函数" << endl; } int main() { fun1(); return 0; }
分析:
声明内联函数需要使用关键字: 内联
要注意的另一点:
①: 函数声明(带有声明)及其实现需要内联关键字
#include <iostream> using namespace std; inline void fun1(); inline void fun1() { cout << "这是内联函数" << endl; } int main() { fun1(); return 0; }
②: 类内定义-所有类内实现都需要使用inline关键字
#include <iostream> 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; }
内联函数类似于宏c++ 内联函数,它们都是副本,但它们比宏更安全
例如:
#include <iostream> 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; }
结果:
未获得结果16.
宏的严格程度不如内联.
最后,这是默认设置: 将inline的声明和实现写在头部.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-257231-1.html
既然美国以武力侵犯中国何不用经济制其经济