繁体   English   中英

在 C++ 中,cin 和 cout 对象与其类 iostream 有何关系?

[英]In C++, how is cin and cout objects in relation to its class iostream?

我正在为 android 应用程序学习 Udacity 初学者课程,它说该类是具有字段(变量)和方法的东西,可用于实例化对象。 基本上,类是对象的蓝图,对象是类的实例。

例如,如果我在 xml 文件中创建一个 'TextView' 对象,我可以用它来分配文本、textSize、textColor 等,这个对象是 'TextView' 类的一个实例,它已经在 J​​ava 中定义了它可以实例化的字段和方法。 因此,对于 TextView 对象,我只是在它的字段和方法之后创建了一个 'TextView' 类的实例。

现在我的困惑来了。

在 C++ 中,“cin”和“cout”被称为“iostream”类的对象。 但是,当我什至没有在我的源代码中实例化它们时,cin 和 cout 怎么可能已经被认为是类的对象呢?

例如,在 Java 中,一旦我在我的 xml 源代码中创建了 TextView,它将成为“TextView”类的对象。 但是,在我使用“iostream”类的字段和方法实例化它之前,cin 和 cout 怎么可能充当“iostream”类的对象? 如果 cin 和 cout 是 'iostream' 类的对象,是否意味着它是 'iostream' 类的实例化?

另外,我在谷歌上查到的很多定义听起来像“iostream”是包含cin和cout对象的东西,但对象不是类的实例,而不是属于层次意义上的类的对象吗? 当然,对象是基于类创建的,但对象不是属于类的东西,好像对象是生活在称为类的更大容器中的较小容器。 那么如果cin和cout是iostream的对象,他们不应该拥有iostream定义的所有字段和方法吗?

我很难在这里连接点。

在 C++ 中,'cin' 和 'cout' 被称为iostream类的对象。

那是不正确的。

以下是标准对它们类型的说明:

namespace std {
   extern istream cin;
   extern ostream cout;
   extern ostream cerr;
   extern ostream clog;

   ...
}

但是,当我什至没有在我的源代码中实例化它们时,cin 和 cout 怎么可能已经被认为是类的对象呢?

它们在标准头文件iostream中声明。 它们是在标准库的实现中定义的。 您不需要在源代码中定义它们。

那么如果cin和cout是iostream的对象,他们不应该拥有iostream定义的所有字段和方法吗?

std::cinstd::istream类型的对象,而std::coutstd::ostream类型的对象。

您可以在std::cin上调用std::istream任何public成员函数。
您可以在std::cout上调用std::ostream任何public成员函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM