C ++でフォローが許可されていないのはなぜですか?
その理由は、コンパイラがコンパイルエラーとして表示するのとまったく同じです
。あいまいだからです。
これらの方法があいまいなのはなぜですか?
簡単な答え:C++標準がそう言っているからです。
これらのオーバーロードされたメソッドがあいまいである理由は何ですか?コンパイラーは、呼び出し元が渡された引数
の値をanとして扱いたいかどうかを知りません。コンパイラーは、手元の情報でそれを判別する方法がありません。const
ここでは値渡しに重点が置かれていることに注意してください。引数は値渡しされているため、あいまいさがあります。引数が参照によって渡された場合、コンパイラは、実際のオブジェクト自体が渡されているため、呼び出し元が引数をどのように処理するかを確実に認識します。したがって、コンパイラは適切なオーバーロードを選択できます。
次の例は、上記の説明をより明確に示しています。
オンラインサンプル:
class Sample
{
public:
void Method(char &x){}
void Method(char const x){}
void Method(char const &x){}
};
int main()
{
Sample s;
return 0;
}