【发布时间】:2016-10-15 10:18:38
【问题描述】:
使用带有许多变量的构造函数时。我首先对其进行了初始化,然后将其放入构造函数中。这种方式只能通过文件或控制台分别输入数据。
-
但是当使用 istream 运算符时>>。我使用了默认构造函数,然后将其放入 istream operator>> 方法中。但是我发现这样似乎不需要使用除默认构造函数之外的其他构造函数,但是属性可以通过文件或控制台输入。 例如:
class Fraction { private: int numerator; int denominator; public: Fraction(int num,int den); Fraction(); friend istream& operator>>(istream& is,Fraction &frac); }; void main() { int num,int den; cin>>num>>den; Fraction fra(num,den); } istream& operator>>(istream& is,Fraction &frac) { is>>frac.numerator>>frac.denominator; return is; } void main() { Fraction f; ifstream inputFile("data.txt"); if(inputFile.file()) { cout<<"File cannot be opened!"<<endl; } inputFile>>f; inputFile.close(); //with input from console cin>>f; }
我的问题是应该使用第一种还是第二种推荐哪种方法?
【问题讨论】:
-
首先你的代码不应该工作。成员
operator>>应该只有 1 个参数。即使你做对了,它也会看起来很奇怪:object>>stream。只需交朋友运算符>>并使用它。提供istream&构造函数会有点矫枉过正,而且不是很自然 -
是的。我忘了用朋友作为运算符>>
标签: c++ class constructor operator-keyword istream