【发布时间】:2010-07-16 22:22:46
【问题描述】:
我知道这是非常基本的,但到目前为止我一直在猜测。
Foo 只是一个从字符串类私有继承的对象,这就是我强制转换它的原因。使用 Primer C++ (Prata's) 中的示例
所以如果我有这样的功能:
istream & operator>>(istream & is, Foo & f)
{
is >> (string &)f;
return is;
}
int main()
{
Foo f;
cin >> f;
}
所以,一旦 cin >> f 被命中,函数就会被调用,并且现在的字符串被存储在 istream 引用中。现在返回 istream 对象,现在...?返回的 istream 对象的内容(字符串)现在是否自动放置在 f 中?还是我错过了了解 cin 工作原理的一步?
另外,如果我这样做:
int x;
cin >> f >> x;
它会隐含地是什么样子?喜欢 (cin) >> x?
最后,还有一件简单的事情。如果在一个函数中(其中包含一个 ostream 引用),我在一个循环中传递每个数组项并执行此操作:
for(int i=0;i < 5;i++)
{
os << array[i] << "\n";
}
ostream 对象是否只是在其自身中复合了每个数组项?
【问题讨论】:
-
Foo中有什么内容?为什么要将它转换为引用字符串? -
忘了说,继承自字符串类,所以需要强制转换 Foo 对象。仅使用 Prata 的入门示例中的一部分。
-
为什么不直接删除
Foo避免混淆?
标签: c++