20240417,友元 FRIEND

2024-04-18 00:12
文章标签 友元 friend 20240417

本文主要是介绍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

这篇关于20240417,友元 FRIEND的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/913251

相关文章

C++基础---友元

友元概念 友元函数 定义: friend<数据类型><友元函数名>(参数列表) #include<iostream>using namespace std;//定义友元函数class Rectangle{private:double length;double width;public:Rectangle(double l,double w):length(l

【C++】解析friend关键字:概念、友元函数与类的使用

前言 在 C++ 中,friend 关键字用于允许非成员函数或其他类访问类的私有成员和保护成员。需要谨慎使用,确保代码的封装性和维护性。 1. 基本概念 friend 关键字可以用来声明以下几种情况: 友元函数(Friend Functions):非成员函数可以成为某个类的友元,从而访问该类的私有和保护成员。友元类(Friend Classes):一个类可以成为另一个类的友元,从而允许

【C/C++】C++类与对象基本概念(抽象封装、类的定义与使用、构造函数、析构函数、静态成员、友元)

目录 七、类与对象基本概念7.1 抽象7.2 类的定义与声明7.3 访问控制7.4 类的实现与使用7.5 对象指针、this指针与对象引用7.6 构造函数7.7 析构函数7.8 拷贝构造函数7.9 类类型作为函数参数7.10 对象数组7.11 静态成员7.12 常对象与常成员(const)7.13 友元7.14 类的组合 七、类与对象基本概念 7.1 抽象 抽象是相对,

C++友元函数以及运算符重载

一、友元函数的作用 函数的私有和保护变量在类内可以访问,在类外只可访问公有变量;派生类在类内只可访问其基类的公有变量和保护变量,在类外只可访问其公有变量(要看具体的继承类型); 因此,在有些情况下,需要访问类的私有或保护变量时,不得不调用其成员函数,因为只有成员函数才有访问的权限。因而多出许多时间开销。 友元函数和类的成员函数的访问权限相同,但是其不是类的成员函数,它破坏了类的封装性;友元函

条款23 宁以non-member、non-friend替换member函数

总结:     用非成员非友元函数取代成员函数。这样做可以提高封装性,包装弹性,和机能扩充性       想象一个用来表示网页浏览器浏览器的类。这样一个类可能提供的大量函数中,有一些用来清空下载元素高速缓存区、清空访问过的URLs历史,以及从系统移除所有cookies的功能: class WebBrowser {public:...void clearCache();void c

friend class和friend functions

C++中的friend class 用法总结-CSDN博客  C++:友元(看这一篇就够了)_c++ 友元-CSDN博客 1. 我们希望可以在类B中直接设置类A的私有或保护成员变量的值。 class A{private:int data;};class B{private:A * a;private:void setData(int value){a->data = value

C++类和对象(下):初始化列表、explicit关键字、友元函数、友元类

文章目录 C++类和对象9、初始化列表9.1构造函数体赋值9.2初始化列表9.3 explicit(显示)关键字 10、友元10.1友元函数10.2友元类 C++类和对象 9、初始化列表 一个类的构造函数要初始化成员变量有两种方式,一种是构造函数体赋值,另一种是初始化列表。 9.1构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适

C++面试基础系列-friend

系列文章目录 文章目录 系列文章目录C++面试基础系列-friendOverview1.friend友元的常见用法2.友元函数和友元类在实际编程中有哪些常见的应用场景?3.如何正确地在C++中使用友元类来优化多线程程序的性能?4.在C++中,除了使用友元,还有哪些方式可以访问类的私有成员?5.除了友元,还有哪些设计模式可以用于访问类的私有成员?关于作者 C++面试基础系

【C++】初始化列表、匿名对象、static成员、友元、内部类

文章目录 一、初始化列表构造函数体赋值初始化列表explicit关键字 二、匿名对象三、static成员四、友元友元函数友元类 五、内部类六、练习题 一、初始化列表 构造函数体赋值 实际上,构造函数的函数体内,并不是对 对象 初始化的地方,而是对成员变量进行赋值。因为初始化只能初始化一次,而构造函数体内可以多次赋值。 class Date{public:Date(int

从0开始C++(五):友元函数运算符重载

友元函数 介绍 C++中的友元函数是一种特殊的函数,它可以访问和操作类的私有成员和保护成员。友元函数可以在类的内部或外部声明和定义,但在其声明和定义中需要使用关键字 friend 来标识。友元函数可以是全局函数,也可以是其他类的成员函数。 下面是友元函数的一些重要特点和用法: 友元函数可以访问和操作类的私有成员和保护成员,这使得函数可以直接访问类的私有数据,而无需通过类的公有接口进行