ビデオ: System Memory in C - Software Debugging 2024
C ++は引数の値を渡すので、constで区別することはできません。以下では実際にmaximum()に渡されるのは2. 0と0の値です。最大()関数はこれらの値がdArgのような変数か0のような定数から来たものかどうかを判断できません。 二重最大値(double d1、double d2); void otherFunction(){double dArg = 2.0; double dNonNegative =最大値(dArg、0);
あなたは
関数の引数をconstとして宣言できます。このような宣言は、関数内で引数の値を変更できないことを意味します。これは、最大(double、double)の次の実装で実証されています。 <! - 1 - > 倍精度(const double d1、const double d2){double dResult = d1; if(d2> dResult){dResult = d2;} //以下は不正なd1 = 0. 0; d2 = 0 return dResult;}
d1とd2への代入は両方ともconstと宣言されているため変更できません。合法でないものは次のとおりです:
//これらの2つの関数は、double double(double d1、double d2)を区別するのに十分に違いはありません。 double最大値(const double d1、const double d2); void otherFunction(){double dArg = 2.0; // C ++は、上記の関数のどれがdoubleを呼び出すか分からない。dNonNegative = maximum(dArg、0);
ここでは、C ++はあなたがコールするときに2つを区別する方法がありません。