iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++类和对象中友元函数怎么使用
  • 170
分享到

C++类和对象中友元函数怎么使用

2023-07-02 00:07:54 170人浏览 泡泡鱼
摘要

这篇文章主要介绍“c++类和对象中友元函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++类和对象中友元函数怎么使用”文章能帮助大家解决问题。友元用到关键字 friend浅解概念举一个非

这篇文章主要介绍“c++类和对象中友元函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++类和对象中友元函数怎么使用”文章能帮助大家解决问题。

    友元

    用到关键字 friend

    浅解概念

    举一个非常实际的例子,假如端午节到了你煮了两种粽子,一种是普通的糯米粽子,一种是特殊的五花肉粽子,糯米粽只要是客人都可以品尝,而五花肉棕只限好朋友品尝,这时候就可以用到友元的知识了。在程序里,有些私有属性也想让类外特殊的一些函数或者类访问,就要用到友元函数。

    友元目的

    让一个函数或者类,访问另一个类的私有属性

    友元的三种实现

    全局函数、成员函数、类都可以做友元。

    全局函数做友元

    示例:

    class Host    //东家{friend void  FriendFunc(Host& H);private:string m_Precious;public:string m_Common;Host() :m_Precious("五花肉粽"), m_Common("糯米粽") {}};void VisitFunc(Host &H){cout << "你的  客人可以吃到你的:" << H.m_Common << endl;}void FriendFunc(Host &H){cout << "你的好朋友可以吃到你的:" << H.m_Precious <<"和"<<H.m_Common<< endl;}

    运行效果:

    C++类和对象中友元函数怎么使用

    普通客人函数没有权限访问Host类的私有属性m_Precious ,而好朋友函数在类中加上friend关键字声明就可以访问类内所有成员属性。最好写到类最上面,这样可以在第一时间告诉编译器该全局函数是该类的友元函数。

    类做友元

    示例:

    class Host    //东家 类{friend class  FriendFunc;private:string m_Precious;public:string m_Common;Host() :m_Precious("五花肉粽"), m_Common("糯米粽") {}};class FriendFunc   //好朋友类{public:Host* host;void visit();FriendFunc();};void FriendFunc::visit(){cout << "你的好朋友可以吃到你的:" << host->m_Precious << "和" << host->m_Common << endl;}FriendFunc::FriendFunc(){host = new Host;}void test01(){FriendFunc F;F.visit();}int main(){test01(); }

    运行效果:

    C++类和对象中友元函数怎么使用

    首先直接copy下来全局函数做友元的Host类,然后把上面的FriendFunc函数变为类;同样在Host类中声明FirstFunc类是其友元类,然后给友元类定义Host类指针,vist访问方法和默认构造函数,这里方法和函数均在类内定义,类外声明;注意:构造函数的声明不需要返回值类型。

    友元类的构造函数定义中直接new了一个Host类,当我们调用友元类的默认构造同时调用Host的默认构造函数并通过初始化列表完成自动赋值,这样就可以在visit函数中访问Host类的成员属性了。使用指针的原因就是new的返回值为指针类型,在堆区开辟空间。

    成员函数做友元

    示例:

    #include<iOStream>using namespace std;class Host;class FriendFun//好朋友类{public:FriendFun();Host* host;void visit();   //让其可以访问Host类的私有成员void visit0();  //和visit对比,不能访问Host类私有成员};class Host           //东家 类{friend void FriendFun::visit();private:string m_Precious;public:string m_Common;Host() :m_Precious("五花肉粽"), m_Common("糯米粽") {}};FriendFun::FriendFun(){host = new Host;}void FriendFun::visit()   //让其可以访问Host类的私有成员{cout << "你的好朋友可以吃到你的:" << host->m_Precious << "和" << host->m_Common << endl;}void FriendFun::visit0()  //和visit对比,不能访问Host类私有成员{cout << "你的好朋友可以吃到你的:" << host->m_Common << endl;}void test(){FriendFun F;F.visit();F.visit0();}int main(){test();}

    运行效果:

    C++类和对象中友元函数怎么使用

    成员函数作为友元和全局函数作为友元区别就是函数声明的位置不同,同样在Host类里加上friend关键字即可,但是一定要注意函数或者方法声明后定义的位置,死死记住代码是按照顺序执行的。

    注意事项

    举个例子:如果直接类内定义FriendFun的构造函数,程序会提示你未定义类型Host,为什么呢,我明明在Host类之前声明了啊,确实声明了,也定义了啊,但是编译器来不及看到定义就以及执行了new Host,肯定会报错;按正确的写法就是把构造函数定义写在Host定义之后,这样程序就把定义的Host看完了,就可以自然而然的生成新的成员了;其实visit的定义也必须写在调用FriendFun构造函数之后,因为只有构造生成了新成员,才能访问到公共或者私有属性啊!

    关于“C++类和对象中友元函数怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网其他教程频道,小编每天都会为大家更新不同的知识点。

    --结束END--

    本文标题: C++类和对象中友元函数怎么使用

    本文链接: https://www.lsjlt.com/news/338631.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • C++类和对象中友元函数怎么使用
      这篇文章主要介绍“C++类和对象中友元函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++类和对象中友元函数怎么使用”文章能帮助大家解决问题。友元用到关键字 friend浅解概念举一个非...
      99+
      2023-07-02
    • C++之友元:友元函数和友元类详解
      一、友元介绍我们知道,类的成员函数可以访问同类的其他成员函数,包括公有、私有和保护成员。而类的外部函数只能访问类的公有成员。友元是一种允许非类成员函数访问类的非公有成员的一种机制。可...
      99+
      2022-11-15
      友元函数 友元类
    • C++中任何事与友元函数和友元类
      本篇文章为大家展示了C++中任何事与友元函数和友元类,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。类具有封装和信息隐藏...
      99+
      2023-06-17
    • C++简单又轻松的讲解类和对象中友元函数
      目录友元浅解概念友元目的友元的三种实现全局函数做友元类做友元成员函数做友元注意事项总结友元 用到关键字 friend 浅解概念 举一个非常实际的例子,假如端午节到了你煮了两种粽子,一...
      99+
      2024-04-02
    • C++ 友元函数详解:友元函数在模板类中的使用?
      在 c++++ 中,友元函数可以访问类的私有成员,而无需成为该类的成员函数。在模板类中,友元函数的声明与普通类中的声明类似,且必须在类的定义外部进行声明。例如,要在模板类 myclass...
      99+
      2024-04-29
      c++ 友元函数
    • C++ 友元函数详解:友元函数在面向对象设计中的应用?
      c++++ 友元函数是一种特殊函数,可访问另一个类的私有和受保护成员。通过声明友元函数,非成员函数可以与特定类交互。友元函数的应用包括操作符重载、i/o 操作和底层实现。例如,友元函数可...
      99+
      2024-04-29
      面向对象 友元函数 c++
    • C++ 友元函数详解:友元函数在特殊类中的应用(如抽象类、虚基类)?
      友元函数允许访问类私有和受保护成员,对于特殊类(抽象类、虚基类)交互至关重要。在抽象类中,友元函数可访问私有成员,即使抽象类本身不能实例化。在虚基类中,友元函数可解决菱形问题,明确继承自...
      99+
      2024-04-30
      c++ 友元函数
    • C++中的成员函数和友元函数怎么使用
      成员函数是定义在类中的函数,它可以访问类中的成员变量和其他成员函数。成员函数使用类的对象来调用,并且隐式地访问该对象的成员。友元函数...
      99+
      2023-08-16
      C++
    • C++友元函数怎么定义和使用
      C++友元函数是指一个非成员函数可以访问类的私有成员和保护成员。以下是定义和使用C++友元函数的步骤:1. 在类的声明中声明友元函数...
      99+
      2023-10-11
      C++
    • C++中的友元函数与友元类详情
      目录一、问题背景二、友元函数三、友元类一、问题背景 对类的封装是C++三大特性中的一个重要特性,封装好的数据在类的外部是访问不到的但是一旦出了问题,想要操作被封装的数据怎么办呢?由此...
      99+
      2024-04-02
    • C++ 友元函数详解:友元函数和类模板的交互?
      友元函数可访问类的私有成员,通过在类声明中使用 friend 声明。类模板允许创建通用类和友元函数,适用于不同类型数据。实战案例中,友元函数模板 printdata() 可打印任何类型 ...
      99+
      2024-04-30
      c++ 友元函数 封装性
    • C++中友元函数与友元类的示例分析
      小编给大家分享一下C++中友元函数与友元类的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、问题背景对类的封装是C++三大特性中的一个重要特性,封装好的...
      99+
      2023-06-29
    • C++中如何使用友元函数
      本篇文章为大家展示了C++中如何使用友元函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。定义:允许一个类将对其非公有成员的访问权授予指定的类或函数(分别是友元类和C++友元函数)。说明:友元是非成...
      99+
      2023-06-17
    • C++ 友元函数详解:如何使用友元函数进行跨类访问?
      c++++ 中的友元函数允许非成员函数访问类的私有和受保护成员,在实现跨类操作、adt 和单元测试中十分有用:声明友元函数:使用 friend 关键字声明一个类外的函数。使用友元函数:直...
      99+
      2024-04-29
      c++ 友元函数
    • C++ 中如何声明和使用友元函数?
      c++++ 中的友元函数是一种可访问其他类私有/受保护成员的特殊函数。声明友元函数时需使用 friend 关键字,如:声明友元函数:friend void printvalue(cons...
      99+
      2024-04-12
      c++ 友元函数 封装性
    • C++ 友元函数详解:何时需要使用友元函数?
      友元函数是一种非成员函数,拥有访问私有或受保护成员的权限。使用友元函数可方便实现跨类数据共享、访问私有成员以实现特定功能、允许外部函数访问类私有数据等。 C++ 友元函数详解:何时使用...
      99+
      2024-04-29
      c++ 友元函数 封装性
    • C++友元函数怎么调用
      在C++中,友元函数可以直接调用,不需要通过对象或类的实例来调用。友元函数可以在类的内部声明和定义,它可以访问类的私有成员和保护成员...
      99+
      2023-10-11
      C++
    • C++的对象特性和友元是什么
      这篇文章主要介绍了C++的对象特性和友元是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++的对象特性和友元是什么文章都会有所收获,下面我们一起来看看吧。对象特征构造函数和析构函数对象的初始化和清理也是两...
      99+
      2023-06-29
    • C++ 友元函数详解:友元函数在STL中的应用?
      在 c++++ 中,友元函数是一种特殊函数,可以访问其他类的私有成员。友元函数的声明使用 friend 关键字,定义时需要注意访问权限。stl 中广泛使用友元函数,以允许容器类与算法相交...
      99+
      2024-04-30
      c++ 友元函数
    • C++ 友元函数详解:友元函数在不同编译单元的使用?
      友元函数允许函数访问其他类的私有成员。当友元函数和它访问的类不在同一编译单元中时,有两种场景:友元函数声明在头文件中:友元函数的声明位于类的头文件中,类的定义位于不同的源文件中,友元函数...
      99+
      2024-04-28
      c++ 友元函数
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作