详解重载输入输出运算符

本文介绍了C++中如何重载输出和输入运算符,通过示例展示了友元函数在重载过程中的作用。文章详细讲解了重载规则,包括函数参数、返回值和对象名的注意事项,并强调了必须使用友元函数来实现这一功能。此外,还补充了关于有元函数的知识,以帮助理解友元函数在类定义中的地位和用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写课程设计,其中就要用到类和重载的有关知识,这次写作业对这些知识点有了自己新的理解和感想,借此机会进行阐述一下

重载输出运算符

有关格式如下

ostream &operator<<(ostream&out,class_name&obj)
{
out<<obj.item1;            //对象名.数据成员名
out<<obj.item2;
return out;
.......


    }

几点注意事项

1、ostream后面的out是可以换的,这里换成什么,后面的函数体就要换成什么,比如说这里改为ostream&output,那么后面的函数体就要都变成output<<obj.item1 

2、函数参数表里面的class_name指的是类名。obj指的是对象名

3、class_name写完后,针对这个类的对象,假如使用了重载的运算符,那么对应的就会按照自己对应的功能进行操作,除了重载的这个对象外,平时的cout输出没有变化。

4、obj也就是对象名,这里随便写一个就行,对于后面的东西没有什么影响。需要注意的就是这里写的对象名要与重载函数体中的对象名对应起来,保持一致。

5、重载输出运算符只能使用友元函数,不能重载为成员函数。

6、不要忘记加上return out,否则的话会有warning

重载输入运算符

有关格式如下

istream& operator>>(istream& in,class_name,&obj)
{
  in>>obj.item1;
  in>>obj.item2;
  .....
  return in;



    }

注意事项

1、只能被重载为有元函数

2、其余几点都和重载输出运算符相同

3、重载输出运算符只能使用友元函数,不能重载为成员函数。

4、不要忘记加上return out,否则的话会有warning

 

补充有元函数知识

在函数名前面加上friend,在类里面写上,但friend不是类的函数成员。在类里面写上函数原型后,类的外面再写函数体时不需要写friend,也不需要声明作用域是哪个类,因为他根本就不是那个类的函数。

#include<bits/stdc++.h>
using namespace std;
class message
{
private:
    int year,month,day;
    double balance;

public:
    ~message(){}
    message(int year1,int month1,int day1):year(year1),month(month1),day(day1){}
    void setdate(int year1,int month1,int day1);
    friend ostream &operator<<(ostream&out,message&s);
    friend istream &operator>>(istream&in,message&b);
};
ostream &operator<<(ostream&out,message&s)                //   不需要加作用域的声明
{
    out<<s.year<<"年"<<s.month<<"月"<<s.day<<"日";
    return out;
}
 istream &operator>>(istream&in,message&b)
{
    in>>b.year>>b.month>>b.day;
    return in;
}
void message::setdate(int year1,int month1,int day1)
{
    year=year1;
    month=month1;
    day=day1;
}
int main()
{
message a(2022,12,10);
cout<<a;


    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛哥带你学代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值