[英]In C++, how is cin and cout objects in relation to its class iostream?
我正在为 android 应用程序学习 Udacity 初学者课程,它说该类是具有字段(变量)和方法的东西,可用于实例化对象。 基本上,类是对象的蓝图,对象是类的实例。
例如,如果我在 xml 文件中创建一个 'TextView' 对象,我可以用它来分配文本、textSize、textColor 等,这个对象是 'TextView' 类的一个实例,它已经在 Java 中定义了它可以实例化的字段和方法。 因此,对于 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::cin
是std::istream
类型的对象,而std::cout
是std::ostream
类型的对象。
您可以在std::cin
上调用std::istream
任何public
成员函数。
您可以在std::cout
上调用std::ostream
任何public
成员函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.