类友元函数
类boy的所有成员函数都类girl的友元函数
关键步骤:首先要在类boy前“前向声明”类girl,然后在girl的私有成员里用“friend”声明类boy是友元类;
示例代码:
#include <iostream>
using namespace std;
class girl;**//前向声明**
class boy{
private:
char *name;
int age;
public:
boy(char *name, int age);
~boy();
void display_girl(const girl &a);
};
class girl
{
private:
char *name;
int age;
friend boy;//声明类boy是类girl的友元函数
public:
girl(char *name, int age);
~girl();
};
int main()
{
girl a("qin", 22);
boy b("dai", 23);
b.display_girl(a);
return 0;
}
girl::~girl(){
cout << "girl destructor" << endl;
}
girl::girl(char *name, int age){
this->name = name;
this->age = age;
}
boy::~boy(){
cout << "boy destructor" << endl;
}
boy::boy(char *name, int age){
this->name = name;
this->age = age;
}
void boy::display_girl(const girl &a){
cout << "boy name is:" << name << endl << "boy age is:" << age << endl;
cout << "girl name is:" << a.name << endl << "girl age is:" << a.age << endl;
}
类boy的一个成员函数是类girl的友元函数
关键步骤:在类boy前“前向声明girl”, 在类girl的公有、私有区用“friend”关键字声明函数,而不是声明类。
#include <iostream>
using namespace std;
class girl;**//前向声明**
class boy{
private:
char *name;
int age;
public:
boy(char *name, int age);
~boy();
void display_girl(const girl &a);
};
class girl
{
private:
char *name;
int age;
friend void boy::display_girl(const girl &a);//声明display_girl函数是类girl的友元函数
public:
girl(char *name, int age);
~girl();
};
int main()
{
girl a("qin", 22);
boy b("dai", 23);
b.display_girl(a);
return 0;
}
girl::~girl(){
cout << "girl destructor" << endl;
}
girl::girl(char *name, int age){
this->name = name;
this->age = age;
}
boy::~boy(){
cout << "boy destructor" << endl;
}
boy::boy(char *name, int age){
this->name = name;
this->age = age;
}
void boy::display_girl(const girl &a){
cout << "boy name is:" << name << endl << "boy age is:" << age << endl;
cout << "girl name is:" << a.name << endl << "girl age is:" << a.age << endl;
}