指针成员和聚合关系-创新互联
1.聚合关系的特征:"成员对象"可以独立于“聚合对象”而存在
公司主营业务:成都网站建设、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出思礼免费做网站回馈大家。2.c++中用“类(or对象)的指针”实现这个 聚合关系
#include#include#includeusing namespace std;
class Coach
{
//定义一个教练类
public:
string name;
public:
Coach() {
this->name = "无名氏" ;//默认构造函数
};
Coach(string name_) :name(name_) {}; //1个参数构造函数
};
class Player
{
//定义一个球员类
public: string name;
public:
Player() {
this->name = "某球员";
}; //默认构造函数
Player(string name_) :name(name_) {}; //一个参数的构造函数
};
//定义一个聚合类:team
class Team
{
private:
Coach* choach_p;
vectorplayers;
string name;
public:
Team(Coach* c,string name_):name(name_)
{
choach_p = c; //指向那个 对象指针
} //构造函数
//分别:招募球员,更换教练,开出球员3个函数
void changeCoach(Coach* c)
{
cout<< "最新消息:"<< "教练 "<< this->choach_p->name<< " 更换为 "<< c->name<< endl;
choach_p = c; //更换教练
}
void employPlayer(Player *p)
{
players.push_back(p);
cout<< "成功招募 球员 "<< p->name<< endl; //招募新球员
}
void firePlayer(Player* p)
{
//开出球员
//遍历vector寻找
for (auto it = players.begin(); it != players.end(); it++)
{
if (*it == p)
{
cout<< "很遗憾,球员"<< p->name<< " 被宣布开除!!!"<< endl;
players.erase(it); //删除对应球员的迭代器(erase里面的参数就是对应的迭代器)
cout<< this->name<<" 剩余"<< players.size()<< "个 球员"<< endl;
break;
}
}
}
};
int main()
{
//测试:
Coach* c = new Coach("张三");
Coach* c2 = new Coach("李四");
//cout<< c->name<< endl;
Player* p1 = new Player("球员1号");
Player* p2 = new Player("球员2号");
Team t1(c, "中大篮球队");
t1.employPlayer(p1);
t1.employPlayer(p2);
t1.firePlayer(p1);
t1.changeCoach(c2);
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站名称:指针成员和聚合关系-创新互联
转载注明:http://cdiso.cn/article/diiihi.html