【问题标题】:cout and cin are not functions, so what are they?cout 和 cin 不是函数,那么它们是什么?
【发布时间】:2013-12-02 22:48:18
【问题描述】:

一般在 C 编程语言中,我们认为 printf 和 scanf 是函数。 当谈到 cout 和 cin 时,在 C++ 中它们是什么?我的意思是它们不能是函数,因为它们后面没有括号,所以它们不是函数。 那么什么是 cout 和 cin 是标准输入和输出函数?还是别的什么?

【问题讨论】:

  • 问题显示完全没有学习努力......
  • 像这样的问题非常基础,您应该能够在任何 C++ 教科书甚至涵盖该主题的大多数教程中查找它们。
  • 您可能想查看The Definitive C++ Book Guide and List 以获取初学者书籍和教程。另外,如果您想要在线参考,this one 被认为是相当不错的。
  • 我看不出这个问题有什么问题。他不是问他们做什么。

标签: c++ iostream


【解决方案1】:

std::coutstd::cin 分别是类 std::ostreamstd::istream 的全局对象,它们重载了运算符 <<>>。你应该阅读operator overloading

   cout    <<      expr  ;
  ~~~~~~  ~~~~   ~~~~~~~~
  object   op.   argument 

这就像一个函数调用;该函数是一个重载运算符和一个快捷方式:

cout.operator<<(expr);

或者这个:

operator<<(cout, expr);

取决于重载决议的结果

【讨论】:

  • 您能否解释一下“取决于重载解析的结果”是什么意思?由于重载决议发生在函数的不同类型的参数上。这里的论点不一样吗?你能写出运算符重载定义在这两种不同情况下的样子吗?您是否建议对于第二种情况,
【解决方案2】:

coutostream 类型的对象。 cinistream 类型的对象。

【讨论】:

  • 所以ostream和istream是类?
  • @user2643191:没错。 :)
【解决方案3】:

它们是全局变量,在标头&lt;iostream&gt;中声明

【讨论】:

    【解决方案4】:

    假设x是一个变量(让整数类型)。我们想把值放在里面。我们做什么?

    我们写 cin>>x 。

    但我们也可以通过编写 cin.operator>>(x) 来放置 int 数据。这意味着 cin 是一个对象,运算符 >> 是一个传递 x 的函数。

    【讨论】:

      猜你喜欢
      • 2016-09-22
      • 1970-01-01
      • 2011-12-07
      • 2011-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多