c++ 重载 >>(输入) 、<< (输出) 操作符
2017-11-11 20:28
375 查看
c++ 重载 >>(输入) 、<< (输出) 操作符
重载输出操作符 <<
为了与标准库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对象。除此之外,还可以设置流的条件状态。用户如果想知道输入是否成功,可以测试流。
转载http://www.cnblogs.com/zhuyf87/archive/2013/02/25/2932441.html
重载输出操作符 <<
为了与标准库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对象。除此之外,还可以设置流的条件状态。用户如果想知道输入是否成功,可以测试流。
转载http://www.cnblogs.com/zhuyf87/archive/2013/02/25/2932441.html
相关文章推荐
- c++ 重载 >>(输入) 、<< (输出) 操作符
- c++ 重载 >>(输入) 、<< (输出) 操作符
- C++输入操作符>> 输出操作符<<重载
- C++中cout/cin对于空指针、字符指针的处理,及输入>>、 输出<<操作符的重载
- 第九周 C++任务一。定义Complex类中的<<和>>运算符的重载,实现输入和输出
- C++中输入输出<< 和>>重载,以便适应输出输入一个对象
- 《C++第九周实验报告1-1》--------接第8周任务1,定义Complex类中的<<和>>运算符的重载,实现输入和输出
- 重载输入>>,输出<<操作符
- C++第九周【任务一】定义Complex类中的<<和>>运算符的重载,实现输入和输出
- c++文件输入输出流fstream,对输入>>和输出<<重载
- 【C++面向对象】输入输出操作符的重载
- 第九周实验报告 任务2 定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然。
- 第九周【项目1】在第8周项1的基础上(1)再定义一目运算符 -,-c相当于0-c(2)定义Complex类中的<<和>>运算符的重载,实现输入和输出,改造原程序中对运算结果显示方式,使程序读起来更自然
- 九周任务三:定义分数类中的<<和>>的重载,实现分数的输入和输出
- C++重载输入和输出操作符以及IO标准库中的刷新输入缓冲区残留字符问题
- C++重载输入和输出操作符以及IO标准库中的刷新输入缓冲区残留字符问题
- C++学习基础八——重载输入和输出操作符
- c++输出(<<)操作符重载
- 第九周C++任务三。定义分数类中<<和>>运算符重载,实现分数的输入输出
- 第九周试验任务1--定义Time类中的<<和>>运算符的重载,实现输入和输出。