用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; }
编辑:从“仍鼓励宏吗??”更改注释 以“做宏还有意义......?”
// is this a good alternative to macros?
template <class T> inline T square(T x) { return x * x; }
是的,这是首选方式。(尽管一般来说模板不需要内联,而显式模板专门化和实例化则需要内联,但保持一致并写下其中的含义是可以的)。
还要注意,constexpr
函数和构造函数是隐式内联的。
还要注意的是使用final
(如适用)虚拟超载的情况下可以帮助直列甚至有些虚方法(检查这个职位的一些例子和说明)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句