/*
友元关系
友元关系是类之间的一种特殊关系,
这种关系不仅允许友元类访问对方的 public 方法和属性,
还允许友元访问对方的 protected 和 private 方法和属性。
声明一个友元关系的语法很简单,只要在类声明里的某个地方
加上一条 friend class ** 就行了。
注:这条语句可以放在任何地方,
放在 public, protected, private 段落里都可以。
题目:”朋友”之妻不可亲
Lovers 类有两个子类:分别为 Boyfriend 类和Girlfriend 类。
Lovers 类有情人应有的方法 kiss(), ask() 等。
另增加第三者 Others 类作为路人甲代表,
Others 类图谋不轨想要 kiss() Girlfriend 类的对象,我们要帮助他实现愿望!
*/
#include <iostream>
#include <string>
//基类
class Lovers
{
public:
Lovers(std::string theName);
void kiss(Lovers *lover);
void ask(Lovers *lover, std::string something);
protected:
std::string name;
//声明友元变量
friend class Others; // 祸根,交友不慎。。。。。。
};
//男友
class Boyfriend : public Lovers
{
public:
Boyfriend(std::string theName);
};
//女友
class Girlfriend : public Lovers
{
public:
Girlfriend(std::string theName);
};
//小三
class Others
{
public:
Others(std::string theName);
void kiss(Lovers *lover);
protected:
std::string name;
};
Lovers::Lovers(std::string theName)
{
name = theName;
}
void Lovers::kiss(Lovers *lover)
{
std::cout << name << "亲亲我们家的" << lover->name << std::endl;
}
void Lovers::ask(Lovers *lover, std::string something)
{
std::cout << "宝贝儿" << lover->name << "帮我" << something << std::endl;
}
Boyfriend::Boyfriend(std::string theName) : Lovers(theName)
{
}
Girlfriend::Girlfriend(std::string theName) : Lovers(theName)
{
}
Others::Others(std::string theName)
{
name = theName;
}
void Others::kiss(Lovers *lover)
{
std::cout << name << "亲一下" << lover->name << std::endl;
}
int main()
{
Boyfriend boyfriend("A君");
Girlfriend girlfriend("B妞");
Others others("路人甲");
girlfriend.kiss(&boyfriend);
girlfriend.ask(&boyfriend, "洗衣服啦");
std::cout << "\n当当当当!传说中的路人甲登场。。。。。。\n";
others.kiss(&girlfriend);
return 0;
}
C++ 友元关系
最新推荐文章于 2022-09-13 08:50:54 发布