以下代码在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;
}
答案 0 :(得分:3)
没有警告或错误的原因是因为这是有效的C ++。 std::string
重载了赋值运算符(operator=
)以获取char
。 long
可以隐式转换为char
,因此代码有意义。