问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++怎么重载<<和>>,头文件是什么,求详细解释,谢谢3

发布网友 发布时间:2023-10-26 02:54

我来回答

4个回答

热心网友 时间:2024-11-02 14:07

头文件指使用include指令包含在程序头部的文件。

重载<<、>>运算符只需使用方法名operator<<、operator>>进行运算符的重载即可。



头文件指使用include指令将预定义好的文件包含在程序头部,故的此名。而实际上头文件并不一定要包含在文件头部,可以在需要的位置直接包含。

头文件包含有两种形式:即#include<>形式和#include""形式;区别在于<>直接在系统路径下查找头文件,""从当前路径开始查找头文件直至系统路径。



对类对象进行运算符重载有友元和类成员方法两种,友元比成员多一个参数(该类对象的引用),重载运算符需要包含标准输入输出流 iostream头文件,非成员函数的重载写法如下:

#include<iostream>
using std::ostream; // using namespace std;过于简单粗暴 不建议使用
using std::istream;
ostream& operator<<(ostream &out, const T &t){ // 假定要重载T类的<<运算符
    // 相关实现;
    return out;
}
istream& operator>>(istream &in, T &t){ // 假定要重载T类的>>运算符
    // 相关实现;
    return in;
}


如有不足,望请指正。

热心网友 时间:2024-11-02 14:08

举例说,你想重载一个类的标准输入流,可以这样做:

class YourClass{
    public int data;
};
friend istream & operator >>(istream & is,YourClass obj){
  is>>obj.data;
  
  return is;  
}

热心网友 时间: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>

std::ostream& operator<<(std::ostream& os, const you_type& val)
{
//you code
return os;
}

std::istream& operator>>(std::istream& is, you_type& val)
{
//you code
return is;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么药止痒效果好 慕容三藏履历 职业cf电脑配置cf电脑配置要求是什么 玩3a电脑配置要求想玩3a大作需要什么配置 台式电脑哪些可以畅享3a大作想玩3a大作需要什么配置 七彩虹i7-10700台式机 性能强劲 高效静音 小黄鱼游戏台式电脑主机(i7-10700F、16GB、512GB、RTX3070)-适用... 工伤保险记什么科目 在4×4的正方形格纸中,有一个以格点为顶点的△ABC,请你找到点C,使三角... 在4×4方格中, 要求C点在格点上,且以AB为边的△ABC为直角三角形,标出所... 英雄联盟里,“管好你的嘴小鬼,否则你会发现你正躺在基地等重生”这句... 宏观经济学解释词语。谁来帮助我解答一下10 谁知道珠海哪里有修手表比较专业的地方吗?6 我身高182cm 想练扣篮 怎么训练? 彭州小鱼洞哪里住宿干净卫生、价格公道?2 ...的翻译是什么?原文(任末十四,负笈从师,不惧险阻。每言:“人而不学... 小鱼洞有什么好玩的135 成都彭州小鱼洞要不要门票?我们想去哪里烧烤,钓鱼,露营,去过...164 到彭州小鱼洞农家乐小住那家价廉物美40 荣耀4A怎么刷机?谁能告诉我 能告诉我刷机之后的大概好处吗 进行一键刷机,小编告诉你如何使用 泸州市高速路要查行程卡吗 怎么让对方看不到你的? 魅族mx2反应快吗 学厨师需要多少钱95 怎样做一名操盘手?94 急字中间的部分读什么?怎么用拼音打出来?1 &quot;打憷&quot;是什么意思啊????2 憷繁体字怎么写呢?拜托 wxid加不了好友怎么办? 怎样隐藏不让微信好友看到? 用al作电极电解naoh溶液时阴极反应方程式为什么是水而不是氢氧根... 我的qq设备锁被人改了手机号我还能申诉回来么13 原电池Mg和Al在NaOH溶液中,Al的电反应式后面为什么生成水?为什么不是... 我想专升本 ,管理学和公共英语怎么复习?2 胸前长小痘痘可以用什么药1 高数英语一般,二月份开始复习专升本有希望吗10 美的空调的尘满怎么清理?70 找一个动漫,好像是一个侦探和些魔法的故事。男主角2 一次性扩岗补助什么意思? 被盗了,也被改了,连实名认证的人也改成别人了,怎么办... 谁能告诉我,华为手机如何刷机? 怎么把jar,bat,捆绑jre,然后打包成exe 求工具,jar 转成exe ,如果没有java 环境,提示安...1 2017河北高考多少分能上二本 文科理科分数线大概多少 ...但是抽血的护士说需要三四天才行,那我该等那么久吗? 被盗了,也被改了,连实名认证的人也改成别人了,怎么办? 梦见小孩骑摩托的预兆 开车到海南需要办什么手续