重载 >> <<
为了更方便实现复杂对象的输入输出
使用成员函数
只贴出关键代码,多余的就不贴了.
//输出运算符重载---成员函数
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;
}