什么是c ++内联显式构造函数?

what c++ inline explicit constructor is good for?

本问题已经有最佳答案,请猛点这里访问。

我有时看到这个构造函数使用内联显式编写。例如:

1
2
3
4
5
6
7
8
9
protected :
    inline explicit Singleton() {

        CCASSERT(Singleton::instance_ == 0,"error Singleton::instance_ == 0.");
        Singleton::instance_ = static_cast<T*>(this);
    }
    inline ~Singleton() {
        Singleton::instance_ = 0;
    }

对于什么内联显式是好的?


如果你是在inlinedefine a函数,在a的头球,但不是在一个类的定义。它可以被定义在多功能翻译单位(IU当包括在来自多个源的头文件)。目的是让一个内联函数调用编译器的编译器需要一个定义在翻译单元是可用的命令做的。

它不在本案例:函数定义在一个类定义是implicitly内联。

explicit意味的构造函数不能被用于隐式类型转换。制造historically镰刀,它只有单参数constructors天;但我认为它也可以用来防止initialisation支撑管。

本案例中,它是不constructors:默认不用于隐式转换。

for what inline explicit is good for ?

在这里,他们都给作者的程度-有用的代码值和过多过verbiage结构清晰。这是进一步的循证由使用的反模式(单胎面在这个代码。


他们是一explicitconstructors implicitly停止使用。

告诉编译器是一个单inline(叶olden天当我们的位置,这样的RAM)的功能是它想要的东西D内联。当然,他们也在今日美国,或美国"最幽默,我会把它在advisement"潜台词"愚蠢的人认为,我不是已经知道了吗?"(inline天短,忽略的是,编译器是一个更好的位置比美国多,决定到内联)。