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可以隐式转换为 a char,因此代码是有意义的。

于 2012-04-16T12:57:22.037 回答