5

C++ の関数プロトタイプのこの構文を見たところです。

explicit String(unsigned char value, unsigned char base=10);

私はこれを前に見たことがありませんが、baseあなたがそれを何と呼んでいても、それが 10 に設定されていると仮定するのは正しいですか?

4

3 に答える 3

4

デフォルトのパラメータである calledbaseは、送信した任意の値を取ります。

String(0);

1 つのパラメーターだけで呼び出すことができるとすれば、2 番目のパラメーターをデフォルトに設定できるため、コンストラクターを としてマークできますexplicit。これは、unsigned char気付かないうちにから一時的なものを作成しないことを意味し、コンストラクターを明示的に呼び出す必要があります。

于 2013-07-29T14:28:00.370 に答える
1

baseデフォルト値があります。後続のすべてのパラメーターにもデフォルト値がある場合、すべてのパラメーターにデフォルト値を割り当てることができます。

explicitは暗黙的な変換を防止するためString k = 0、有効なものとして受け入れられません。それ以外の場合は呼び出されString(0, 10)ます。

于 2013-07-29T14:28:30.750 に答える
0

このリンクを参照してください:

関数を宣言するとき、最後のパラメーターのそれぞれにデフォルト値を指定できます。この値は、関数の呼び出し時に対応する引数が空白のままになっている場合に使用されます。これを行うには、関数宣言で代入演算子と引数の値を使用するだけです。関数の呼び出し時にそのパラメーターの値が渡されない場合、デフォルト値が使用されますが、値が指定されている場合、このデフォルト値は無視され、渡された値が代わりに使用されます。

explicitキーワードは、暗黙的な変換を防ぎます。

パラメーターが 1 つだけの C++ ctor (コンストラクター) は、暗黙的な型変換を自動的に実行します。たとえば、ctor が文字列ポインター パラメーターを想定しているときに int を渡すと、コンパイラーは、int を文字列ポインターに変換するために必要なコードを追加します。ただし、この自動動作によりエラーが発生する可能性があります。

于 2013-07-29T14:26:24.480 に答える