接着说说友员friend和操作符重载operator,为了把这两个搞清楚,费了大半天劲儿搞了一个堆栈,被一堆指针问题搞得头都大了! 不过,最终还是OK了!
这次做这么一件事,搞体育活动。每个团队Team 有5个队员Comperitor ,可以对队员做入栈、出栈操作,每个队员有编号、名字。对输入队员信息、输出队员信息做操作符重载,使得输入的时候能够给出相应提示。
构建一个队员类Comperitor
C++代码
/** /** /** /** /** /** /** |
/** * 设置名字 */ void setName(char *name) { strcpy(this->name, name); } |
/** * 重载输入操作符 */ friend istream & operator >>(istream & is, Comperitor & c) { cout << "请输入您的编号: "; is >> c.id; cout << "请输入您的姓名: "; is >> c.name; return is; } |
/** /** /** /** /** /** /** /** /** /** // 输入 // 指向置为当前输入对象 // 当前指针自 加 // 指针复位 // 将当前指针指向栈顶 // 置为栈满 } /** // 输出 // 指向置为空 // 当前指针自减 // 指针复位 // 置为栈空 // 将当前指针指向栈底 /** /** |
/** * 队员列表 */ Comperitor *c[5]; |
#p#副标题#e#
关于指针的使用,我还解释不清楚,久远的过去了能将就用了!
看看整体的程序吧!
#include <iostream> using namespace std; /** /** /** /** /** /** /** /** /** /** /** /** /** /** /** /** /** // 输入 // 指向置为当前输入对象 // 当前指针自 加 // 指针复位 // 将当前指针指向栈顶 // 置为栈满 } /** // 输出 // 指向置为空 // 当前指针自减 // 指针复位 // 置为栈空 // 将当前指针指向栈底 /** /** /** Team t; cout << endl << "队员数据输入:" << endl; cout << endl << "队员数据输出:" << endl; return 0; |
队员数据输入: 队员数据输出: |