在 C++ 中使用内联函数的优点/缺点是什么?我看到它只会提高编译器输出的代码的性能,但是对于今天优化的编译器、快速的 CPU、巨大的内存等(不像 1980 年那样,内存稀缺,所有东西都必须适合 100KB 的内存)什么他们今天真的有优势吗?
内联函数更快,因为您不需要像参数和返回地址那样在堆栈上/从堆栈上推送和弹出东西;但是,它确实使您的二进制文件稍大一些。
它有很大的不同吗?对于大多数人来说,在现代硬件上不够明显。但它可以有所作为,这对某些人来说已经足够了。
将某些内容标记为内联并不能保证它是内联的。这只是对编译器的建议。有时这是不可能的,例如当你有一个虚函数时,或者当涉及到递归时。有时编译器只是选择不使用它。
我可以看到这样的情况会产生可察觉的差异:
inline int aplusb_pow2(int a, int b) { return (a + b)*(a + b) ; } for(int a = 0; a < 900000; ++a) for(int b = 0; b < 900000; ++b) aplusb_pow2(a, b);