【发布时间】:2014-05-12 16:29:12
【问题描述】:
为什么下面代码中的指令os->operator>> input是错误的? operator>>的返回值不就是对象*os吗?
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
double input;
ifstream * os = new ifstream("prova.dat");
os->operator>> input;
return 0;
}
【问题讨论】:
-
不要使用指向
ifstreams 的指针!它们不打算以这种方式使用。它们可以在必要时通过引用传递。 -
@Rook 具体是什么原因?
-
@RoyIacob 与任何其他对象相同,只要可以避免,不应通过原始指针引用使用。
-
抱歉,我以为
input是一个字符串。os->operator>>(input)或*os >> input都可以。 -
@RoyIacob:标准类都经过精心编写,以处理它们自己的资源创建和清理。通过在堆上创建它们,您将失去它们为您提供的所有良好的 RAII 设施,您必须承担自己的清理责任,并且其他各种事情变得更难做。我想不出这样做有什么好处。
标签: c++ pointers operators ifstream