20240417,友元 FRIEND

news/2024/9/25 0:16:14/

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

目录

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


http://www.ppmy.cn/news/1427337.html

相关文章

将本地项目推送至gitlab仓库

1. gitlab上新建一个空白项目 gitlab上点击new project按钮&#xff0c;新建一个项目 新建空白项目 项目名称与本地新建项目名称相同&#xff0c;其余根据具体需要选择 2. 初始化本地仓库并commit项目 进入本地项目根目录下&#xff0c;右击 git bash here打开命令窗口 初始化…

C语言第六章之内存分布,内存管理

内存分布 C代码编译过程 预处理 宏定义展开、头文件展开、条件编译&#xff0c;这里并不会检查语法 编译 检查语法&#xff0c;将预处理后文件编译生成汇编文件 汇编 将汇编文件生成目标文件(二进制文件) 链接 将目标文件链接为可执行程序 进程的内存分布 程序运行起来(…

Ubuntu22.04下opencv4.9.0环境的搭建

目录 1、更新系统包列表:2、安装依赖项:3、下载 OpenCV 源代码:4、编译和安装 OpenCV:5、配置环境变量:6、测试1、更新系统包列表: 在终端中执行以下命令,以确保系统包列表是最新的: sudo apt update2、安装依赖项: 安装构建 OpenCV 所需的依赖项: sudo apt inst…

怎么用手机远程控制电脑 远程控制怎么用

怎么用手机远程控制电脑&#xff1a;远程控制怎么用 在这个科技日新月异的时代&#xff0c;远程控制电脑已经成为了很多人的需求。有时&#xff0c;我们可能在外出时突然需要访问家中的电脑&#xff0c;或者在工作中需要远程操控办公室的电脑。这时&#xff0c;如果能用手机远…

css层叠性,继承性,优先级

前言 本文概要&#xff1a;讲述css的三大特性&#xff0c;层叠&#xff0c;继承和优先级。 层叠性 描述&#xff1a;我们试想以下这种情况&#xff1a;我们定义了同一个选择器&#xff0c;但是定义的属性不同。属性有相同的也有不同的&#xff0c;那么最后我们这个页面会听谁的…

园区巡检机器人能解决哪些问题?

在当今城市化快速发展的背景下&#xff0c;园区管理成为了城市管理的重要组成部分。然而&#xff0c;随着园区规模的不断扩大和管理需求的日益增加&#xff0c;传统的园区巡检方式已经无法满足对园区安全、环境监测和设施维护的需求。人工巡检存在着效率低、覆盖范围有限、安全…

【SpringBoot实战篇】获取用户详细信息

1 明确需求 1需要获取用户详细信息 2 接口文档 1基本信息 2请求参数 无 3 响应数据 响应数据类型&#xff1a;application/json 响应参数说明&#xff1a; 响应数据样例 3 思路分析 1用户名在请求头里获取 4 开发 4.1 控制器usercontroller GetMapping("/userInfo")p…

多语言vue-i18n (vue2,uniapp)

安装vue-i18n npm install vue-i18n8 --save // npm install vue-i18n–save 9版本需要vue3.0 // 在vue2环境下&#xff0c;默认安装 npm install vue-i18n 的版本是 vue-i18n9.2.2&#xff0c; // 报错信息里提示这个版本要求是vue3&#xff0c;所以我们安装适合vue2版本的vu…