给出一个类:
struct employee {
string name;
string ID;
string phone;
string department;
};
Run Code Online (Sandbox Code Playgroud)
以下功能如何工作?
ostream &operator<<(ostream &s, employee &o)
{
s << o.name << endl;
s << "Emp#: " << o.ID << endl;
s << "Dept: " << o.department << endl;
s << "Phone: " << o.phone << endl;
return s;
}
Run Code Online (Sandbox Code Playgroud)
cout << e;生成给定的格式化输出employee e.
示例输出:
Alex Johnson
Emp#: 5719
Dept: Repair
Phone: 555-0174
Run Code Online (Sandbox Code Playgroud)
我无法理解ostream功能是如何工作的.它如何获得参数"ostream&s"?它如何重载"<<"运算符以及<<运算符如何工作?如何用它来写出关于员工的所有信息?有人可以用外行的话回答这些问题吗?
这称为重载分辨率.你写的cout << *itr.编译器把它作为operator<<(cout, *itr);其中cout的一个实例,如果ostream和*itr是员工的一个实例.您已经定义了void operator<<(ostream&, employee&);与您的呼叫最匹配的功能.因此,它的执行传递cout的s和*itr为o
| 归档时间: |
|
| 查看次数: |
544 次 |
| 最近记录: |