C ++中的内联代码:选项及其优点/缺点

卢卡

用C ++实现内联代码的方法有哪些?我只能考虑宏和内联函数。C ++ 11/17/20中还有更多替代方法(例如lambda)吗?的优点和缺点?

// do macros still make sense in modern C++ standards?
#define square(x) ((x)*(x))

// is this a good alternative to macros?
template <class T> inline T square(T x) { return x * x; }

编辑:从“仍鼓励宏吗??”更改注释 “做宏还有意义......?”

StPiere
// is this a good alternative to macros?
template <class T> inline T square(T x) { return x * x; }

是的,这是首选方式。(尽管一般来说模板不需要内联,而显式模板专门化和实例化则需要内联,但保持一致并写下其中的含义是可以的)。

还要注意,constexpr函数和构造函数是隐式内联的。

还要注意的是使用final(如适用)虚拟超载的情况下可以帮助直列甚至有些虚方法(检查这个职位的一些例子和说明)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章