友元函数和友友元类
友元函数
友元函数的用法以及缺陷
#include <iostream>
using namespace std;
class DaXiong
{
public:
DaXiong();
~DaXiong();
friend void seeBook(DaXiong Dx);
private:
string book;
};
DaXiong::DaXiong() : book("漫画书")
{
cout << "Default Constructor" << endl;
}
DaXiong::~DaXiong()
{
}
void seeBook(DaXiong Dx)
{
cout << Dx.book << endl;
}
int main(int argc, const char *argv[])
{
DaXiong Dx;
seeBook(Dx);
return 0;
}
缺陷是破坏了c++的封装性
友元类
友元类的用法
#include <iostream>
using namespace std;
class PangHu;
class DaXiong
{
public:
DaXiong();
friend PangHu;
private:
string book;
};
DaXiong::DaXiong() : book("漫画书")
{
}
class PangHu
{
public:
void seeBook(DaXiong Dx);
};
void PangHu::seeBook(DaXiong Dx)
{
cout << Dx.book << endl;
}
int main(int argc, const char *argv[])
{
PangHu ph;
DaXiong dx;
ph.seeBook(dx);
return 0;
}