1

次のコードは、G++ (GCC) 4.1.2 で警告やエラーなしでコンパイルされます。

エラー/警告を発行しない理由はありますか?

警告またはエラーを発行するフラグはありますか?

#include <iostream>

using namespace std;

void func(string &s)
{
    unsigned long u = 123;
   s = u;
}

int main()
{
   string s;

   func (s);

   return 0;
}
4

1 に答える 1

3

警告やエラーが表示されない理由は、これが有効な C++ であるためです。 std::stringを受け取る代入演算子 ( operator=) をオーバーロードしcharます。 long暗黙的に に変換できるcharため、コードは理にかなっています。

于 2012-04-16T12:57:22.037 に答える