发布网友 发布时间:2023-10-26 02:54
共4个回答
热心网友 时间:2024-11-02 14:07
头文件指使用include指令包含在程序头部的文件。
重载<<、>>运算符只需使用方法名operator<<、operator>>进行运算符的重载即可。
头文件指使用include指令将预定义好的文件包含在程序头部,故的此名。而实际上头文件并不一定要包含在文件头部,可以在需要的位置直接包含。
头文件包含有两种形式:即#include<>形式和#include""形式;区别在于<>直接在系统路径下查找头文件,""从当前路径开始查找头文件直至系统路径。
对类对象进行运算符重载有友元和类成员方法两种,友元比成员多一个参数(该类对象的引用),重载运算符需要包含标准输入输出流 iostream头文件,非成员函数的重载写法如下:
如有不足,望请指正。
热心网友 时间:2024-11-02 14:08
举例说,你想重载一个类的标准输入流,可以这样做:
热心网友 时间:2024-11-02 14:08
重载输出操作符 <<
为了与标准库IO操作一致,重载 << 操作符函数应把ostream&作为其第一个参数,对类类型const对象的引用作为第二个参数,并返回对ostream形参的引用。
ostream& operator<<(ostream& out, const Sales_item& s)
{
out << s.isbn << “\t” << s.units_sold << “\t”
<< s.revenue << “\t” << s.avg_price();
return out;
}
一般而言,“<<”应输出对象的内容,进行最小限度的格式化,尤其不应输出换行符,而让用户自己控制输出细节。
“<<”操作符应定义为非成员函数。因为对于类的成员函数,左操作数为该类类型的对象,这样只能将第二个参数作为ostream&,使用时:
Sales_item item;
item << cout;
这与“<<”的正常使用习惯相反。所以“<<”操作符应定义为非成员函数,并将其作为所操作类的友元。
重载输入操作符 >>
与输出操作符类似,输入操作符函数的第一个形参为流的引用,第二个形参为类类型对象的引用(非const,因为 >> 的目的就是将数据读入到该对象中)。
istream& operator>>(istream& in, Sales_item& s)
{
double price;
in >> s.isbn >> s.units_sold >> price;
// check that the inputs succeeded
if (in)
s.revenue = s.units_sold * price;
else
s = Sales_item(); // input failed: reset object to default state
return in;
}
输入操作符要检测和处理在读入数据时可能发生的错误。如果输入失败,则确保对象处于可用和一致的状态,比如将形参恢复为空的Sales_item对象。除此之外,还可以设置流的条件状态。用户如果想知道输入是否成功,可以测试流。
热心网友 时间:2024-11-02 14:09
#include <iostream>