explicitキーワードの運用
1417 ワード
C++ explicit, 。
C++ , , 。1. 2. 。 int AAA; XXX , XXX int。 , AAA 。
, “ bug”, :
class TextA
{
public:
TextA(int n){num = n;} // 。
private:
int num;
}
class TextB
{
public:
explicit TextB(int n){num = n;}
private:
int num;
}
int main()
{
TextA t1 = 1; //
TextB t2 = 1; //
TextB t2(1); //
return 0;
}
TextAのコンストラクション関数はint型のパラメータを持つため、TextA t 1=1である.TextAを呼び出すこのコンストラクション関数に暗黙的に変換されます.ただし、キーワードexplicitの宣言により、TextB t 2=1となる.暗黙的に変換することなく、このようにTextB t 2(1)しかできない.表示される呼び出し.