特性:
书接上文,在下篇我们主要谈谈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 变量名 : 数组名)的格式去书写,就能拿到数组的每一个值,想要对原数组的值进行更改,只需改为引用即可。