1.全局函数做友元函数:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class person
{
//加上friend关键字,printage函数变为友元函数,可以访问私有变量
friend void printage(person *p);
public:
person(int age);
private:
int age;
};
//person的构造函数
person::person(int age)
{
this->age = age;
}
//全局函数printage();
void printage(person *p)
{
cout << "p的年龄为: " << p->age << endl;
}
int main()
{
person p(18);
printage(&p);
system("pause");
return EXIT_SUCCESS;
}
2.类做友元类
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class marry
{
//加上friend关键字,类bob就成为了marry的友元类
friend class bob;
public:
marry();
private:
int m_age;
};
class bob
{
public:
void viewmarryage(marry *m)
{
cout << "marry的年龄:" << m->m_age << endl;
}
bob();
private:
int b_age;
};
//bob的构造函数
bob::bob()
{
b_age = 20;
}
//marry的构造函数
marry::marry()
{
m_age = 18;
}
void test01()
{
marry m;
bob b;
b.viewmarryage(&m);
}
int main()
{
test01();
system("pause");
return EXIT_SUCCESS;
}
3.成员函数做友元函数:
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class marry;
class bob
{
public:
void viewmarryage(marry *m);
};
class marry
{
friend void bob::viewmarryage(marry *m);
public:
marry()
{
m_age = 19;
}
private:
int m_age;
};
void bob::viewmarryage(marry *m)
{
cout << "marry的年龄为:" << m->m_age << endl;
}
void test01()
{
marry m;
bob b;
b.viewmarryage(&m);
}
int main()
{
test01();
system("pause");
return EXIT_SUCCESS;
}