cout自动识别
最近心血来潮自学C++奈何碰到一些问题{:5_104:}我这样使用cout是错误的吗,我知道 如果把 int ch; 改成 char ch; 就会运行正确的输出结果, 但是 getchar 函数返回的是整型, 整型要求我去赋值给字符型(我才不干嘞!) 于是乎我考虑了一个问题,cout应该具有自动识别数据类型的功能吧,不然怎么能做到不格式化就可以输出呢?{:10_249:} 况且,在我看来,char 只不过是八位的整型罢了.一家人才对! 有没有精通(滑稽)C++的大佬指点迷津哇!?__CRT_INLINE __cdecl __MINGW_NOTHROWint getchar (void)
我想了一会儿,觉得这样也是很合理的,至于getchar为何会设计成返回整型,C陷阱和缺陷第八十四页有写。 char ch;
(ch = (char)getchar() != '\n')??
EOF 的关系
iostream 都载了…… int 跟 iostream 的大小完全不能比~ 本帖最后由 moc 于 2018-9-2 20:54 编辑
ostream& operator<<(ostream &out, 类名 &name)
cout<<可以这样重载的,这样你定义的新的类都可以通过这种方式,把你想要打印出来的东西打印下来。 moc 发表于 2018-9-2 20:52
ostream& operator
确定类型的关键字是哪个。 #include <iostream>
namespace Test
{
class ostream
{
public:
ostream &operator<<(int num)
{
printf("%d", num);
return *this;
}
ostream &operator<<(char ch)
{
putchar(ch);
return *this;
}
ostream &operator<<(ostream &(*pf)(ostream &out))
{
return pf(*this);
}
};
ostream cout;
ostream &endl(ostream &out)
{
putchar('\n');
fflush(stdout);
return out;
}
};
int main()
{
int ch1 = 'a';
char ch2 = 'a';
Test::cout << ch1 << Test::endl;
Test::cout << ch2 << Test::endl;
return 0;
}
97
a
请按任意键继续. . .
Test::cout << ch1 << Test::endl; // 调用的是 ostream &operator<<(int num)
Test::cout << ch2 << Test::endl; // 调用的是 ostream &operator<<(char ch)
页:
[1]