20240417,友元 FRIEND

··················本来要学习的吃瓜吃了一下午

目录

3.1 全局函数做友元

3.2 友元类

3.3 成员函数做友元

三,友元

3.1 全局函数做友元
#include<iostream>
using namespace std;
class Building
{
	friend void goodGay(Building* building);
	//好朋友,可以访问buiding的全部成员
public:
	Building()
	{
		m_SittingRoom = "客厅";
		m_BedRoom = "卧室";
	}
	string m_SittingRoom;
private:
	string m_BedRoom;
};
void goodGay(Building *building)
{
	cout << "好基友的全局函数  正在访问:" << building->m_SittingRoom << endl;
	cout << "好基友的全局函数  正在访问:" << building->m_BedRoom << endl;
}
void test01()
{
	Building bding;
	goodGay(&bding);
}
int main()
{
	test01();
	system("pause");
	return 0;
}
3.2 友元类
#include<iostream>
#include<string>
using namespace std;
class Building;

class Goodgay
{
public:
	Goodgay();
	void visit();//参观函数,访问BUIDING中的属性
	Building * building;
};

class Building
{
	friend Goodgay;//GoodGAY类是BUILDING类的好朋友,可以访问BUILDING的私有成员
public:
	Building();
	string m_SittingRoom;
private:
	string m_BedRoom;
};

Building::Building()//类外写成员函数
{
	m_SittingRoom = "客厅";
	m_BedRoom = "卧室";
}
Goodgay::Goodgay()
{
	//创建一个建筑物的对象
	building = new Building;//堆区创建一个BUILDING的对象
	//构造函数解决初始化问题,所以?这是初始化?*building指向这个堆区对象
}
void Goodgay::visit()
{
	cout << "好基友类正在访问:" << building->m_SittingRoom << endl;
	cout << "好基友类正在访问:" << building->m_BedRoom << endl;
}
void test01()
{
	Goodgay gg;
	gg.visit();
}
int main()
{
	test01();
	system("pause");
	return 0;
}
3.3 成员函数做友元
#include<iostream>
#include<string>
using namespace std;
class Building;

class Goodgay
{
public:
	Goodgay();
	void visit();//可以访问Buiding私有
	void visit01();//不可以访问Buiding私有
	Building * building;
};

class Building
{
	//friend void visit();这种写法会将VISIT识别为一个全局函数,而不是Goodgay中的成员函数
	friend void Goodgay::visit();
public:
	Building();
	string m_SittingRoom;
private:
	string m_BedRoom;
};

Building::Building()//类外写成员函数
{
	m_SittingRoom = "客厅";
	m_BedRoom = "卧室";
}
Goodgay::Goodgay()
{
	//创建一个建筑物的对象
	building = new Building;//堆区创建一个BUILDING的对象,返回指针
	//构造函数解决初始化问题,所以?这是初始化?building指向这个堆区对象
}
void Goodgay::visit()
{
	cout << "好基友类visit 正在访问:" << building->m_SittingRoom << endl;
	cout << "好基友类visit 正在访问:" << building->m_BedRoom << endl;
}
void Goodgay::visit01()
{
	cout << "好基友类visit01  正在访问:" << building->m_SittingRoom << endl;
	//cout << "好基友类visit01 正在访问:" << building->m_BedRoom << endl;
}
void test01()
{
	Goodgay gg;
	gg.visit();
	gg.visit01();
}
int main()
{
	test01();
	system("pause");
	return 0;
}

想让谁访问,就让谁FRIEND

相关推荐

  1. C++friend

    2024-04-21 23:26:06       33 阅读
  2. 函数(friend function)← 面向对象

    2024-04-21 23:26:06       42 阅读
  3. C++函数和类(C++ friend关键字)

    2024-04-21 23:26:06       57 阅读
  4. 函数与

    2024-04-21 23:26:06       52 阅读
  5. 【C++】函数

    2024-04-21 23:26:06       63 阅读
  6. C++

    2024-04-21 23:26:06       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 23:26:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 23:26:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 23:26:06       87 阅读
  4. Python语言-面向对象

    2024-04-21 23:26:06       96 阅读

热门阅读

  1. Linux配置路由服务器

    2024-04-21 23:26:06       31 阅读
  2. C语言表达式求值、隐式类型转换、算数转换

    2024-04-21 23:26:06       37 阅读
  3. 统一SQL-number/decimal/dec/numeric转换

    2024-04-21 23:26:06       26 阅读
  4. 什么是显卡服务器?

    2024-04-21 23:26:06       34 阅读
  5. Linux 中解压不同的压缩文件用到不同的命令详解

    2024-04-21 23:26:06       33 阅读
  6. 计算机网络(第7版谢希仁)笔记

    2024-04-21 23:26:06       29 阅读
  7. 蓝桥杯刷题-游戏

    2024-04-21 23:26:06       32 阅读
  8. docker下debian8编译安装nginx+php

    2024-04-21 23:26:06       30 阅读
  9. RESTful API构建 web 应用程序

    2024-04-21 23:26:06       39 阅读