2012-04-16 3 views
1

Следующий код компилируется без каких-либо предупреждений или ошибок в G ++ (GCC) 4.1.2.g ++ целое число для назначения строк без ошибки/предупреждения

Есть ли причина не выдавать сообщение об ошибке/предупреждении?

Есть ли флаг, который может привести к его предупреждению или ошибке?

#include <iostream> 

using namespace std; 

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

int main() 
{ 
    string s; 

    func (s); 

    return 0; 
} 

ответ

3

Причина, по которой нет предупреждения или ошибки, заключается в том, что это действительно C++. std::string перегружает оператор присваивания (operator=), чтобы принять char. long может быть неявно преобразован в char, поэтому код имеет смысл.

 Смежные вопросы

  • Нет связанных вопросов^_^