我看到有时这个构造函数用内联显式编写.例如:
protected :
inline explicit Singleton() {
CCASSERT(Singleton::instance_ == 0, "error Singleton::instance_ == 0.");
Singleton::instance_ = static_cast<T*>(this);
}
inline ~Singleton() {
Singleton::instance_ = 0;
}
Run Code Online (Sandbox Code Playgroud)
内联显式有什么用?
inline如果在标题中定义函数,但在类定义中没有定义函数,则是必需的.它允许在多个转换单元中定义函数(即,当包括来自多个源文件的头时).目的是允许编译器内联对函数的调用 - 许多编译器要求在翻译单元中提供定义才能执行此操作.
在这种情况下,它是没有意义的:在类定义中定义的函数是隐式内联的.
explicit表示构造函数不能用于隐式类型转换.从历史上看,它只适用于单参数构造函数; 但我想现在它也可以用来防止支撑初始化.
在这种情况下,它也毫无意义:默认构造函数不用于隐式转换.
内联显式有什么用?
在这里,他们都给出了有用的代码气味 - 作者重视措辞和过度清晰的结构.通过使用Singleton反模式进一步证明了这一点 - 在此代码中谨慎使用.
| 归档时间: |
|
| 查看次数: |
4256 次 |
| 最近记录: |