Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > cout.operator << (c) против operator << (cout, c)


Автор: Mayk 4.11.2005, 15:26
Почему
Код

char ch = '!';
operator<<(cout,ch) << endl;
cout.operator << (ch) << endl;

Выводит разные строки:
Цитата

!
33

smile
Так и должно быть? А почему? Почему во втором случае ch обрабатывается как signed int, а не как символ?

ps. гнус 3.3.5

Автор: maxim1000 4.11.2005, 15:29
потому, что operator<< для cout и char реализован только одним способом, судя по результатам - в виде обычной функции
а метода такого нету, поэтому, когда пишут operator<<(cout,c) все происходит так, как и задумано - вызывается статическая функция, а когда cout.operator<<©, статическая функция не может быть вызвана, т.к. программист ясно сказал "хочу метод", вот и ищется среди методов подходящий, находят для signed int...

Автор: Mayk 4.11.2005, 15:43
Ага. Понятно. Точно так и есть. Спасибо, разобрался smile

зы. ох уж эти преобразования типов...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)