C++快速入门---友元关系(14)
友元关系是类之间的一种关系。
这种关系不仅允许友元类访问对方的public方法和属性,还允许友元访问对方的protected和private方法和属性。
代码如下:
others不是lovers的子类,在others::kiss()访问不了属性name。因为在基类Lovers和Others类,定义了一种友元关系。
#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 &