输入输出运算符重载

重载 >> <<
为了更方便实现复杂对象的输入输出

使用成员函数

只贴出关键代码,多余的就不贴了.


//输出运算符重载---成员函数
	ostream& operator<<(ostream &os);

ostream& Boy::operator<<(ostream& os)
{
	//os 相当于cout
	os << "ID:" << id << "\t姓名:" << name << "\t年龄:" << age
		<< "\t薪资:" << salary << "\t黑马系数:" << darkHorse;

	return os;
}


}
#include<iostream>
#include"Boy.h"

int main(void) {
	
	Boy boy1("lemn",20,20000,10);
	Boy boy2("jack", 40, 30000, 5);

	//cout << boy1;//cout.operator(boy);
	boy2<<(boy1 << cout);//这样写比较反人类,不支持

	system("pause");
	return 0;

使用非成员函数(友元函数实现)

//输出运算符重载---成员函数
	friend ostream& operator<<(ostream& os, Boy& boy);

#include<iostream>
#include"Boy.h"

ostream& operator<<(ostream& os, Boy& boy) {
	os << "ID:" << boy.id << "\t姓名:" << boy.name << "\t年龄:" << boy.age
		<< "\t薪资:" << boy.salary << "\t黑马系数:" << boy.darkHorse;

	return os;
}

int main(void) {
	
	Boy boy1("lemn",20,20000,10);
	Boy boy2("jack", 40, 30000, 5);
	
	cout << boy1<<endl<<boy2<<endl;

	system("pause");
	return 0;
}
//输入运算符重载
	friend istream& operator>>(istream& is, Boy& boy);


ostream& operator<<(ostream& os, Boy& boy) {
	os << "ID:" << boy.id << "\t姓名:" << boy.name << "\t年龄:" << boy.age
		<< "\t薪资:" << boy.salary << "\t黑马系数:" << boy.darkHorse;

	return os;
}

istream& operator>>(istream& is, Boy& boy) {
	string name2;
	is >> name2 >> boy.age >> boy.salary >> boy.darkHorse;
	boy.name = (char*)malloc((name2.length() + 1) * sizeof(char));
	strcpy_s(boy.name, name2.length()+1, name2.c_str());//把name2 c语言的字符串拷贝到 boy.name中
	return is;
}

int main(void) {
	
	Boy boy1("lemn",20,20000,10);
	Boy boy2("jack", 40, 30000, 5);
	
	cout << boy1<<endl;

	cin >> boy1;
	cout << boy1;

	system("pause");
	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值