これはしばらくの間私を困惑させてきました.printfでは、パラメータをどのように解釈すべきかを指示するフォーマッタを提供しますが、coutはこれを必要としません. cout は正しい型に従って変数を読み取ることをどのようにして知るのでしょうか?
1 に答える
2
関数のオーバーロードと呼ばれます。operator<<
C++ では、異なるパラメーター セットを使用する限り、同じ名前 (この場合は ) の関数をいくつでも使用できます。cout
パラメータがどのように解釈されるかを指示するのではなく、コンパイラが指示します。むしろ、コンパイラはどの関数が呼び出されるかを指示し、その関数はパラメーターのフォーマット方法を指示します。コンパイラは各パラメータの型を認識し、それに応じて適切な関数を呼び出します。
たとえば、これは呼び出しますostream::operator<<(int)
cout << 10;
これは を呼び出しますがostream::operator<<(double)
、これはまったく別の関数です。
cout << 3.14;
于 2013-06-30T00:42:17.013 に答える