广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++中的友元函数与友元类详情
  • 296
分享到

C++中的友元函数与友元类详情

2024-04-02 19:04:59 296人浏览 独家记忆
摘要

目录一、问题背景二、友元函数三、友元类一、问题背景 对类的封装是c++三大特性中的一个重要特性,封装好的数据在类的外部是访问不到的但是一旦出了问题,想要操作被封装的数据怎么办呢?由此

一、问题背景

对类的封装是c++三大特性中的一个重要特性,封装好的数据在类的外部是访问不到的但是一旦出了问题,想要操作被封装的数据怎么办呢?由此友元函数友元类诞生了。在类中用friend关键字声明的函数或类,可以对类体中的任何权限成员属性进行操作
有好处就有坏处友元函数、友元类严重破坏类的封装性,不到迫不得已不要使用。

二、友元函数

声明部分: friend 返回类型 函数名 (参数列表);

定义部分:返回类型 函数名 (参数列表){
        函数体,在这个函数体中可以对相应对象的成员变量用运算符进行操作
    };

 友元函数就是一个全局函数,成为了某类的朋友,可以随意修改他的私有属性。

具体使用方法如下:

#include<iOStream>
using namespace std;
class test_Y {
private:
    int a;
    int b;
public:
    test_Y(int a=0,int b=0) {
        this->a = a;
        this->b = b;
    }
    int getA() {
        return a;
    }
    int getB() {
        return b;
    }
    void print() {
        cout << "a:" << a << " " << "b:" << b << endl;
    }
    void tran2();
    friend void tran1(test_Y& a);
    void tran3(test_Y &a) {
        a.a = 0;
        a.b = 0;
    }
};
void tran1(test_Y& a) {//传进去的是要改变的对象;
    a.a = 100;//类的友元函数对变量的操作方法;
    a.b = 100;
}
void test_Y::tran2() {
    this->a = 200;//类的成员函数对变量的操作方法;
    this->b = 200;//类中的私有成员变量只能在类体内访问不可以在类体外进行访问
}//在类体外的成员函数中也不行;在类体内就可以通过成员符对成员变量进行操作;
int main() {
    test_Y a1(1, 2),a2(3,4);
    a1.tran2();
    a1.print();
    tran1(a2);
    a2.print();
    a2.tran3(a2);
    a2.print();
    return 0;
}

友元函数在进行流运算符重载的时候非常实用。

三、友元类

声明部分:friend 类名;

语法部分:在友元类中对另一个类中的成员属性进行操作;
友元类会破坏类的封装性要慎用;

具体使用方法如下:【将B类设置为A类的友元类】

#include<iostream>
using namespace std;
class A {
private:
    int a;
    int b;
public:
    A(int a = 0, int b = 0) {
        this->a = a;
        this->b = b;
    }
    void setAB(int a = 0, int b = 0) {
        this->a = a;
        this->b = b;
    }
    void print() {
        cout << a<<" "<< b << endl;
    }//************************重点保护区********************************
    friend class B;//如果去掉就不可以访问;类的嵌套也可以完成相互的初始化
};//但是不可以在另一个类中直接对类的私有属性进行访问;(去掉friend关键字显而易见会报错);
class B {//************************保护重点,人人有责****************************
private:
    int a;
    int b;
public:
    B(int a=0,int b=0) {
        this->a = a;
        this->b = b;
    }
    void BuseA(A &a) {//B使用A类对象的属性
        this->a = a.a;//将类A对象的成员变量赋值给B类对象的成员变量;
        this->b = a.b;
    }
    void BsetA(A &a) {//B对象的属性初始化A类对象的属性
        a.a = this->a;
        a.b = this->b;
    }
    void print() {
        cout << a << " " << b << endl;
    }
};
int main() {
    B b1(1, 2);
    A a1(3, 4);
    b1.BsetA(a1);//B设置A;
    a1.print();
    a1.setAB(100, 200);//对A的对象a1重新赋值;用于测试下面是否能够改变B;
    b1.BuseA(a1);//B的对象在A对象的基础之上初始化;
    b1.print();
}

友元类,在不到迫不得已的时候,不要使用。友元函数在进行

到此这篇关于C++中的友元函数与友元类详情的文章就介绍到这了,更多相关C++友元函数和友元类内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++中的友元函数与友元类详情

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

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

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

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

下载Word文档
猜你喜欢
  • C++中的友元函数与友元类详情
    目录一、问题背景二、友元函数三、友元类一、问题背景 对类的封装是C++三大特性中的一个重要特性,封装好的数据在类的外部是访问不到的但是一旦出了问题,想要操作被封装的数据怎么办呢?由此...
    99+
    2022-11-13
  • C++之友元:友元函数和友元类详解
    一、友元介绍我们知道,类的成员函数可以访问同类的其他成员函数,包括公有、私有和保护成员。而类的外部函数只能访问类的公有成员。友元是一种允许非类成员函数访问类的非公有成员的一种机制。可...
    99+
    2022-11-15
    友元函数 友元类
  • C++中任何事与友元函数和友元类
    本篇文章为大家展示了C++中任何事与友元函数和友元类,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类。类具有封装和信息隐藏...
    99+
    2023-06-17
  • C++中友元函数与友元类的示例分析
    小编给大家分享一下C++中友元函数与友元类的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、问题背景对类的封装是C++三大特性中的一个重要特性,封装好的...
    99+
    2023-06-29
  • 静态成员,友元函数,友元类
    🐶博主主页:@ᰔᩚ. 一怀明月ꦿ  ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++ 🔥座右铭:“不要等到什么都没有了,才下定决心去做” ...
    99+
    2023-09-05
    jvm c++ java
  • C++中友元函数(friend)解析
     文章转自公众号:Coder梁(ID:Coder_LT) 我们知道C++控制对象的私有部分的访问,只能通过公共的接口。这样的设计当然没错,但有的时候也会显得过于严格,产生一...
    99+
    2022-11-12
  • C++超详细讲解友元与内部类
    目录一.友元1.友元函数(1)引入原因(2)友元函数作用(3)友元函数特征2.友元类(1)解释(2)友元类特征二.内部类(不常用)1.概念2.特性 一.友元 友元分为: 友...
    99+
    2022-11-13
  • C++实例代码详解友元函数
    目录友元概述普通全局函数作为类的友元类的某个成员函数作为另一个类的友元一个类整体作为另一个类的友元友元的注意事项封装电视机 和遥控器的类友元函数 可以直接操作类的私有数据。 frie...
    99+
    2022-11-13
  • C++中如何使用友元函数
    本篇文章为大家展示了C++中如何使用友元函数,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。定义:允许一个类将对其非公有成员的访问权授予指定的类或函数(分别是友元类和C++友元函数)。说明:友元是非成...
    99+
    2023-06-17
  • C++友元函数怎么调用
    在C++中,友元函数可以直接调用,不需要通过对象或类的实例来调用。友元函数可以在类的内部声明和定义,它可以访问类的私有成员和保护成员...
    99+
    2023-10-11
    C++
  • C++类和对象中友元函数怎么使用
    这篇文章主要介绍“C++类和对象中友元函数怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++类和对象中友元函数怎么使用”文章能帮助大家解决问题。友元用到关键字 friend浅解概念举一个非...
    99+
    2023-07-02
  • C++友元函数的作用是什么
    C++友元函数的作用是允许一个函数访问一个类的私有成员和保护成员。通常情况下,只有类的成员函数可以访问类的私有成员和保护成员,但是有...
    99+
    2023-10-11
    C++
  • C++的友元和虚函数是什么
    这篇文章主要介绍了C++的友元和虚函数是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++的友元和虚函数是什么文章都会有所收获,下面我们一起来看看吧。友元可以是一个函数,该函数被称为友元函数;友元也可以是...
    99+
    2023-06-17
  • C++中友元函数friend该怎么解析
    这期内容当中小编将会给大家带来有关C++中友元函数friend该怎么解析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我们知道C++控制对象的私有部分的访问,只能通过公共的接口。这样的设计当然没错,但有的...
    99+
    2023-06-22
  • C++中类的友元机制是什么
    这篇文章主要为大家详细介绍了C++中类的友元机制是什么,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:类的友元  友元是C++提供的一种破坏数据封装和数据隐藏的机制。  通过将一个模块声明为另一个模块的友元,一...
    99+
    2023-06-06
  • C++中成员函数和友元函数的使用及区别详解
    为什么使用成员函数和友元函数 这个问题至关重要,直接影响着后面的理解: 程序数据: 数据是程序的信息,会受到程序函数的影响。封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一...
    99+
    2022-11-13
  • 关于C++中的友元函数的一些总结
    1.友元函数的简单介绍 1.1为什么要使用友元函数 在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是...
    99+
    2022-11-15
    友元函数 C++
  • C++中的成员函数和友元函数怎么使用
    成员函数是定义在类中的函数,它可以访问类中的成员变量和其他成员函数。成员函数使用类的对象来调用,并且隐式地访问该对象的成员。友元函数...
    99+
    2023-08-16
    C++
  • C++友元函数怎么定义和使用
    C++友元函数是指一个非成员函数可以访问类的私有成员和保护成员。以下是定义和使用C++友元函数的步骤:1. 在类的声明中声明友元函数...
    99+
    2023-10-11
    C++
  • C++简单又轻松的讲解类和对象中友元函数
    目录友元浅解概念友元目的友元的三种实现全局函数做友元类做友元成员函数做友元注意事项总结友元 用到关键字 friend 浅解概念 举一个非常实际的例子,假如端午节到了你煮了两种粽子,一...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作