1.全局函数做友元
文章来源:https://www.toymoban.com/news/detail-612408.html
#include <iostream>
using namespace std;
/******************************************/
//友元
class House {
//告诉编译器 goodGay全局函数是House类的好朋友,可以访问类中的私有内容
friend void goodGay(House* house);
public:
House() {
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
string m_SittingRoom;
private:
string m_BedRoom;
};
//全局函数
void goodGay(House* house) {
cout << "好基友全局函数 正在访问:" << house->m_SittingRoom << endl;
cout << "好基友全局函数 正在访问:" << house->m_BedRoom << endl;
}
void test01() {
House house;
goodGay(&house);
}
/******************************************/
int main()
{
/******************************************/
test01();
/******************************************/
system("pause");
return 0;
}
2.类做友元
#include <iostream>
using namespace std;
/******************************************/
//类做友元
class House;
class GoodGay {
public:
GoodGay();
void visit();//参观函数 访问House中的属性
private:
House* house;
};
class House {
//GoodGay是本类的好朋友,可以访问本类中私有成员
friend class GoodGay;
public:
House();
public:
string m_SittingRoom;//客厅
private:
string m_BedRoom;//卧室
};
//类外写成员函数
House::House() {
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
GoodGay::GoodGay() {
//创建房子对象
house = new House;
}
void GoodGay::visit() {
cout << "好基友类正在访问:" << house->m_SittingRoom << endl;
cout << "好基友类正在访问:" << house->m_BedRoom << endl;
}
void test01() {
GoodGay gg;
gg.visit();
}
/******************************************/
int main()
{
/******************************************/
test01();
/******************************************/
system("pause");
return 0;
}
不在类外定义成员函数:文章来源地址https://www.toymoban.com/news/detail-612408.html
#include <iostream>
using namespace std;
/******************************************/
//类做友元
//class House;
class House {
//GoodGay是本类的好朋友,可以访问本类中私有成员
friend class GoodGay;
public:
House() {
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
public:
string m_SittingRoom;//客厅
private:
string m_BedRoom;//卧室
};
class GoodGay {
public:
GoodGay() {
//创建房子对象
house = new House;
}
void visit()//参观函数 访问House中的属性
{
cout << "好基友类正在访问:" << house->m_SittingRoom << endl;
cout << "好基友类正在访问:" << house->m_BedRoom << endl;
}
private:
House* house;
};
void test01() {
GoodGay gg;
gg.visit();
}
/******************************************/
int main()
{
/******************************************/
test01();
/******************************************/
system("pause");
return 0;
}
3.成员函数做友元
#include <iostream>
using namespace std;
/******************************************/
//成员函数做友元
class House;
class GoodGay {
public:
GoodGay();
void visit(); //让visit函数可以访问House中私有成员
void visit2();//让visit2函数不可以访问House中私有成员
House* house;
};
class House {
//告诉编译器 GoodGay类下的visit成员函数作为本类的好朋友,可以访问私有成员
friend void GoodGay::visit();
public:
House();
public:
string m_SittingRoom; //客厅
private:
string m_BedRoom; //卧室
};
//类外实现成员函数
House::House() {
m_SittingRoom = "客厅";
m_BedRoom = "卧室";
}
GoodGay::GoodGay() {
house = new House;
}
void GoodGay::visit() {
cout << "visit正在访问: " << house->m_SittingRoom << endl;
cout << "visit正在访问: " << house->m_BedRoom << endl;
}
void GoodGay::visit2() {
cout << "visit2正在访问: " << house->m_SittingRoom << endl;
//cout << "visit2正在访问: " << house->m_BedRoom << endl;
//因为visit2没有在House进行friend声明
}
void test01() {
GoodGay gg;
gg.visit();
gg.visit2();
}
/******************************************/
int main()
{
/******************************************/
test01();
/******************************************/
system("pause");
return 0;
}
到了这里,关于【C++】类和对象-友元的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!