什么c + +内联显式构造函数是好的?
这个问题在这里已经有了答案:
如果您在头中定义函数,而不是在类定义中定义函数,则inline
是必需的。 它允许在多个翻译单元中定义该功能(即,当包含来自多个源文件的标题时)。 目的是为了让编译器内联调用函数 - 许多编译器要求定义在翻译单元中可用,才能做到这一点。
在这种情况下,它是毫无意义的:在类定义中定义的函数隐式内联。
explicit
意味着构造函数不能用于隐式类型转换。 历史上,它只对单参数构造函数有意义; 但我认为现在它也可以用来防止大括号初始化。
在这种情况下,它也没有意义:默认构造函数不用于隐式转换。
对于内联显式的好处是什么?
在这里,他们都给有用的代码气味 - 作者价值观念和过度结构超过清晰度。 使用Singleton反模式进一步证明了这一点 - 在此代码中谨慎行事。
用构造函数explicit
阻止它们被隐式使用。
inline
是一种告诉编译器的方法(在我们缺乏内存的情况下),函数是它想要内联的东西。 当然,他们现在忽视我们,或者最多用“愚蠢的人,我认为我不知道那已经?”这样的潜台词来“幽默地告诉我们”。 (简而言之,现在inline
忽略了,编译器比我们决定内联的位置要好得多)。