文章标题

/重载输入输出运算符:
//平时我们可以用流来输入输出一般的字符串和整形等内置的类型的值,
//但对于我们自定义的类,比如Cute_Pig 却不能直接通过cout << Me << endl
//这样的形式来输出类的内容或者给类赋值,即我们可以通过重载输入,输出
//运算符来进行自定义:

include

include

using namespace std;

class Cute_Pig
{
//重载输出运算符:第一个形参是非常量ostream对象的引用是因为流写入内容会改变其状态,用引用是因为流对象不支持复制
// 第二个形参是一个常量的引用,该常量是我们想要输出的类的类型,用引用是因为我们希望避免复制实参,
// 常量是因为通过打印对象的时侯,不希望改变对象的内容。
friend ostream& operator<<(ostream & os,const Cute_Pig& Me); // cout.operator<<(ostream & os ,L)?
//重载输如运算符:第一个形参是运算符将要读取的流的引用第二个形参是将要读入到的流的引用,第二个形参非常量,目的
// 是将数据读入到对象中,所以对象会被改变,
//区别:输入运算符必须要处理输入可能失败的情况,输出运算符则不需要

friend istream& operator>>(istream & is, Cute_Pig& Me);
public:
Cute_Pig(int num = 0, string name = “”): _num(num),_name(name) //构造函数,初始化列表
{
cout << “Cute_Pig “<< endl;
}
~Cute_Pig(){} //析构函数
private:
int _num;
string _name;
};
istream& operator>>(istream & is, Cute_Pig& Me)
{
is >> Me._num >> Me._name; //中间不需要加不必要的分隔符 is >> Me._num >> ” ” >>…error
if(!is) //并且自动换行
{
Me = Cute_Pig();//如果输入失败,默认初始化
}
return is;
}
ostream& operator<<(ostream & os, const Cute_Pig& Me)
{
os << Me._num <<” ” << Me._name ;
return os;
}
int main(void)
{
Cute_Pig L;
cout << “input: ” << endl;
cin >> L;
cout << “output: ” << endl;
cout << L << endl;
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值