全局函数做友元
#include <iostream>
using namespace std;
class house
{
friend void goodfriend(house& h);
private:
string sitting_room;
public:
string beding_room;
public:
house()
{
sitting_room = "sitting_room";
beding_room = "beding_room";
}
};
void goodfriend(house& h)
{
cout << h.beding_room << endl;
cout << h.sitting_room << endl;
}
int main()
{
house h;
goodfriend(h);
}
类做友元
#include <iostream>
using namespace std;
class house
{
friend class dog;//狗是人类最好的朋友
private:
string sitting_room;
public:
string beding_room;
public:
house()
{
sitting_room = "sitting_room";
beding_room = "beding_room";
}
};
class dog
{
public:
dog()
{
h = new house();//给狗一个家
}
void visit()
{
cout << "欢迎狗子来我的" << this->h->beding_room << endl;
}
house* h;
};
int main()
{
dog d;
d.visit();
}
成员函数做友元
这里house类将dog类中的成员函数visit()作为友元,需要在house类内进行声明,所以需要在house类之前先声明dog类及其成员,不然会报错
#include <iostream>
using namespace std;
class house;
class dog
{
public:
dog();
void visit();
house* h;
};
class house
{
friend void dog::visit();;//狗是人类最好的朋友
private:
string sitting_room;
public:
string beding_room;
public:
house()
{
sitting_room = "sitting_room";
beding_room = "beding_room";
}
};
dog::dog()
{
h = new house();//给狗一个家
}
void dog::visit()
{
cout << "欢迎狗子来我的" << this->h->beding_room << endl;
}
int main()
{
dog d;
d.visit();
}