背景:在类中 私有成员变量无法被类外访问
1.全局函数做友元
实例代码如下:
#include <iostream>
using namespace std;
class Person
{
//友元
friend void showDetial(Person* p);
public:
Person(): m_Age(10), m_Name(20)
{
}
public:
int m_Age;
private:
int m_Name;
};
void showDetial(Person *p)
{
cout << "age :" << p->m_Age << endl;
cout << "name :" << p->m_Name << endl;
}
int main()
{
return 0;
}
2.友元类
示例代码如下
#include <iostream>
using namespace std;
#include <string>
class Build;
class Friend
{
public :
Friend();
Build *bui;
void visit();
};
class Build
{
//友元类
friend class Friend;
public:
Build();
string m_Name;
private:
string m_Age;
};
//这里仅仅使用类外定义的使用
Build::Build(): m_Name("godv"), m_Age("抱金砖")
{
}
Friend::Friend()
{
bui = new Build();
}
void Friend::visit()
{
cout << bui->m_Name << endl;
cout << bui->m_Age << endl;
}
int main()
{
Friend f;
f.visit();
system("pause");
return 0;
}
3.友元函数
示例代码如下;
#include <iostream>
using namespace std;
#include <string>
class Builds;
class Friends
{
public:
Friends();
Builds* b;
void visit();
};
class Builds
{
friend void Friends::visit();
public:
Builds();
string m_Name;
private:
string m_Age;
};
void Friends::visit()
{
cout << b->m_Name << endl;
cout << b->m_Age << endl;
}
Builds::Builds():m_Name("godv"), m_Age("666")
{
}
Friends::Friends():b(new Builds())
{
}
int main()
{
Friends fs;
fs.visit();
return 0;
}