首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

关于C++中的friend友元函数的总结

:   char *name;   int age;   friend boy; //声明类boy是类girl的友元 }; main函数就不写了和普通调用时一样的。 ...声明:friend + 成员函数的声明  调用:先定义Y的对象y—使用y调用自己的成员函数—自己的成员函数中使用了友元机制  代码:  实现代码和2.4.2.3中的实现及其相似只是设置友元的时候变为friend...注意:  1.类中通过使用关键字friend 来修饰友元函数,但该函数并不是类的成员函数,其声明可以放在类的私有部分,也可放在共有部分。友元函数的定义在类体外实现,不需要加类限定。 ...public:     wheel(int s);     friend void car::run(wheel &w);   //这里把car类的成员函数做了友元函数。...从一定程度上讲,友元是对数据隐藏和封装的破坏,但是为了数据共享,提高程序的效率和可读性,很多情况下这种小的破坏是必要的。  在一个类中,利用关键字friend将其它函数或类声明为友元。

1K30

【C++】友元函数 ( 友元函数简介 | 友元函数声明 | 友元函数语法 | 友元函数声明不受访问控制限制 | 友元函数参数要求 )

; 二、友元函数声明 1、友元函数语法 " 友元函数 " 需要在 类 中进行声明 , 使用 friend 关键字修饰函数 , 语法如下 : class ClassName { // 成员变量和成员函数...friend returnType functionName(arguments); }; returnType : 是 友元函数 的 返回值 ; functionName : 是...; private: // 声明友元函数 friend void changeAge(Student* s, int age); 4、友元函数示例 在 类中声明 如下友元函数 : private...: // 声明友元函数 friend void changeAge(Student* s, int age); 即使使用了 private 限定友元函数 , 在类的外部也能访问该函数 ; 在类的外部定义上述友元函数...- 友元函数 ---- 在下面的代码示例中 , Student 类有一个私有成员变量 age , 并且声明了一个友元函数 changeAge ; private: // 声明友元函数 friend

2.5K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    友元函数和友元类

    友元提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过友元,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。...友元函数 : 友元函数是可以直接访问类的私有成员的非成员函数。...它是定义在类外的普通函数,它不属于任何类,但需要在类的定义中加以声明,声明时只需在友元的名称前加上关键字friend,其格式如下: friend 类型 函数名(形式参数); 函数可以是多个类的友元函数,只需要在各个类中分别声明。 友元函数的调用与一般函数的调用方式和原理一致。...友元类 : 友元类的所有成员函数都是另一个类的友元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。

    1.1K20

    C++友元和友元函数

    友元函数 C++可以通过使用关键词friend在一个类内声明一个全局非类内成员函数作为自己的友元函数,给予它高度的访问权限,允许这个函数访问自己类内所有成员(包括私有成员)。...我们先定义一个Circle类作为例子,这个类中声明了全局函数Area是自己的友元函数: class Circle { public: friend int Area(Circle &); private...还有就是声明另一个类的成员函数是友元函数时要加上类名和作用域运算符。 ...友元 C++还可以通过使用关键词friend在一个类内将另一个类声明为自己的友元,允许这个类访问自己类内所有成员(包括私有成员)。...还是我们的Point类和Circle类,稍作修改一下: class Circle; class Point { friend Circle; }; 注意 友元和友元函数是单向的,我把你当作朋友,但在你的心里

    18520

    友元函数,内联函数

    友元函数 有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。...友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。...如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend 为什么要引入友元函数: 在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量...2)两个类要共享数据的时候 3、怎么使用友元函数: 友元函数的参数: 因为友元函数没有this指针,则参数要有三种情况: 1、 要访问非static成员时,需要对象做参数;--常用(友元函数常含有参数...友元函数的调用: 可以直接调用友元函数,不需要通过对象或指针 友元函数的分类: 根据这个函数的来源不同,可以分为三种方法: 1、普通函数友元函数: a) 目的:使普通函数能够访问类的友元

    13410

    C++_友元函数与友元类

    友元 1.知识点介绍 类的特性之一就是封装,而友元就是C++为用户提供打破这种封装的手段,友元分为友元函数和友元对象 2.友元函数 1、友元函数,他只是一个函数,友元函数不是类的成员,通过类对象是无法访问的...2、友元函数,无论声明在类中的任访问属性下都可以,不影响他的调用和访问 !!!...fun(); // 私有函数成员 friend void FFun(CA& a); // 类外定义友元函数 friend void FFun1(CA& a) // 类中定义友元函数 {...a.fun(); //友元函数中调用普通函数 } }; void CA::fun() { cout << "测试成功" << endl; } void FFun(CA& a) { a.num =...友元类是一个单独的类,只不过和友元函数一样,在类中声明了一个友元类,在这个友元类中同样也 可以访问该类中的所有成员,在A类中声明B类为A类的友元类,那么在B类中就可以访问A类中的所有成员 // 示例

    53420

    C++友元函数和友元类

    现在,我们来介绍一种例外情况——友元(friend)。 借助友元(friend),可以使得其他类中的成员函数以及全局范围内的函数访问当前类的 private 成员。...friend 的意思是朋友,或者说是好友,与好友的关系显然要比一般人亲密一些。我们会对好朋友敞开心扉,倾诉自己的秘密,而对一般人会谨言慎行,潜意识里就自我保护。...在 C++ 中,这种友好关系可以用 friend 关键字指明,中文多译为“友元”,借助友元可以访问与其有好友关系的类中的私有成员。...如果你对“友元”这个名词不习惯,可以按原文 friend 理解为朋友。 友元函数 在当前类以外定义的、不属于当前类的函数也可以在类中声明,但要在前面加 friend 关键字,这样就构成了友元函数。...友元函数可以是不属于任何类的非成员函数,也可以是其他类的成员函数。 友元函数可以访问当前类中的所有成员,包括 public、protected、private 属性的。

    18550

    C++友元函数与友元类

    友元函数是一个可以访问类的私有成员的函数,并且它不属于这个类。 友元类则是可以访问另一个类的私有成员的类。...声明友元函数/友元类,则需要这样做: 比如,我们需要生命ClassTwo是ClassOne的友元类,那么我们要在ClassOne中加入这么一行语句: friend class ClassTwo; 相应的...,声明ClassOne的友元函数也是在ClassOne中加入以下代码: friend void xxx(); 关于朋友关系的来源: 朋友关系是被给予的,而不是主动获得的。...这就是说,如果函数B要成为类A的友元函数,那么必须在A中声明B是友元函数。 并且,朋友关系不具有对称性。假设有两个类A、B,B是A的友元类,但是并不意味着A是B的友元类。...下面举了一个例子来说明友元函数的用法: #include using namespace std; class Count { friend void setX(Count&,

    32220

    C++:11---友元函数、友元类

    一、友元(friend) 概念:通过友元,打破了类的封装性,可以访问类内的所有成员 分类:友元函数、友元类 二、友元函数 概念:友元函数是一个普通函数,不属于类,但需要在类内表明友元关系...友元函数可访问类内所有成员,但类不可以访问友元函数内部数据 格式 友元函数可以在类内声明时,需要加上关键字friend 友元函数可以在类外声明,类外定义。...使类中的某一部分函数成为友元 使整个类成为友元 class Cb;//声明类 class Ca { private: int num; public: friend class Cb; //使整个类成为...Ca的友元,则Cb所有的成员都可以访问Ca的所有成员 }; class Cb { public: void setCaNum(Ca& a); void Func(); }; 使类中的某一部分函数成为友元...五、友元的声明和作用域的关系 使用一个友元时,要考虑到其友元的声明和作用域的问题,请看下面代码 class X { public: friend void f(){} //友元函数在类内定义 X()

    62920

    C++ 友元函数

    类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。...友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。...如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend,如下所示:class Box{ double width;public: double length; friend...void printWidth( Box box ); void setWidth( double wid );};声明类 ClassTwo 的所有成员函数作为类 ClassOne 的友元,需要在类...{ double width;public: friend void printWidth( Box box ); void setWidth( double wid );}; // 成员函数定义

    80620

    复数运算(友元函数)

    题目描述 复数类的声明如下: 要求如下: 1.实现复数类和友元函数addCom和outCom。 2.  ...参考addCom函数为复数类增加一个友元函数minusCom,用于实现两个复数的减法 3.在main函数中,通过友元函数,实现复数的加减法和复数的输出。 输入 第1行:第1个复数的实部和虚部。...输入样例1  10 10 3 + 20 10 - 15 5 + 5 25 输出样例1 (30,20) (15,15) (20,40) 思路分析 这道题也不难,主要考查友元函数的知识,必须要说明的是...,在类内声明的友元函数并不是属于这个类的,友元函数是独立于类的,类只是给予它访问私有成员的权限而已。...complex addCom(complex c1,complex c2); friend complex minusCom(complex c1,complex c2); friend void

    14520

    C++ 友元函数

    友元函数概述 类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。...友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。...友元函数特点 友元函数是在类声明中由关键字friend修饰说明的非成员函数,在它的函数体中能够通过对象名访问private和protected成员; 可以增加灵活性,使程序可以在封装和快速性方面做合理选择...如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend,如下所示: class Box { double width; public: double length;...的友元,需要在类 ClassOne 的定义中放置如下声明: friend class ClassTwo; 友元函数示例1代码如下: #include "iostream" using namespace

    21220

    C++友元函数和友元类的使用

    1.友元介绍 在C++中,友元(friend)是一种机制,允许某个类或函数访问其他类的私有成员。通过友元,可以授予其他类或函数对该类的私有成员的访问权限。...2.类友元 类友元(Friend Class): 可以将一个类声明为另一个类的友元。这样,在被声明为友元的类中,就可以直接访问另一个类的私有成员。...友元关系通常在类的声明部分使用 friend 关键字来声明。...Friend Function) 可以将一个函数声明为一个类的友元函数。...这样,在友元函数中可以直接访问该类的私有成员。 友元函数可以是非成员函数,也可以是其他类的成员函数。 友元函数通常在类的声明部分或声明外部使用 friend 关键字来声明。

    37540

    C++面向对象友元,全局函数、类、成员函数做友元

    友元 生活中你的家有客厅(Public),有你的卧室(Private) 客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去 但是呢,你也可以允许你的好闺蜜好基友进去。...在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术 友元的目的就是让一个函数或者类 访问另一个类中私有成员 友元的关键字为 ==friend== 友元的三种实现 全局函数做友元...类做友元 成员函数做友元 全局函数做友元 class Building { //告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容 friend void...<< endl; cout 友正在访问" m_BedRoom friend...告诉编译器 goodGay类是Building类的好朋友,可以访问到Building类中私有内容 可以设置类与类之间的访问权限 成员函数做友元 class Building; class goodGay

    39220

    【C++】友元类 ( 友元类简介 | 友元类声明 | 友元类单向性 | 友元类继承性 | 友元类作用 | 友元类和友元函数由来 | Java 反射机制 | C C++ 编译过程 )

    和 受保护成员 ; B 是 A 的好朋友 , B 可以访问 A 的所有成员 ; 2、友元类声明 声明一个 类 B 是 另一个类 A 的 友元类 , 可以 在类 A 中使用 friend 关键字来声明 ;...friend class StudentCaculate; } 3、友元类单向性 友元类单向性 : 友元类关系是单向的 , 声明一个类 B 是 另一个类 A 的 友元类 , B 可以访问 A 的 所有成员...作为 某个类的 数据操作 辅助类 ; 作为 多个类 之间 传递信息 的 辅助类 ; 二、友元类和友元函数由来 1、友元类和友元函数引入 友元类 和 友元函数 会破坏 C++ 面向对象 的封装性 , 那么为什么还会出现该机制呢..., // 声明 StudentCaculate 类是 Student 类的友元类 // 在 StudentCaculate 类中可以访问 Student 类中的私有成员 friend class...// 在 StudentCaculate 类中可以访问 Student 类中的私有成员 friend class StudentCaculate; // 声明友元函数 friend void

    2.6K10

    EasyC++66,友元函数

    因此C++提供了另外一种形式的访问权限,叫做友元(friend)。 友元有三种,分别是友元函数、友元类和友元成员函数。...通过让函数成为类的友元,可以赋予该函数与类成员函数一样的访问权限,也就是说我们可以在友元函数当中访问类的私有成员变量。 在介绍友元函数的使用之前,我们需要先了解为什么需要友元函数。...为了破例让它能够访问,我们需要将它设置成友元。 创建友元的方法很简单,我们只需要在函数签名之前加上关键字friend。...private和public数据 由于友元函数不是成员函数,所有我们在实现的时候不需要使用Time::限定符,也不用在实现当中加上关键字friend,函数的实现如下: Time operator*(double...hours和minutes成员变量,因此函数必须是友元函数。

    25310

    从零开始学C++之友元:友元函数和友元类

    可以把一个函数指定为类的友元,也可以把整个类指定为另一个类的友元。...友元函数 友元类 二、友元函数 友元函数在类作用域外定义,但它需要在类体中进行说明 为了与该类的成员函数加以区别,定义的方式是在类中用关键字friend说明该函数,格式如下: friend  ...类型 友元函数名(参数表); 友元的作用在于提高程序的运行效率 友元函数注意事项: 1、友元函数不是类的成员函数,在函数体中访问对象的成员,必须用对象名加运算符“.”加对象成员名。...3、某类的友元函数的作用域并非该类作用域。如果该友元函数是另一类的成员函数,则其作用域为另一类的作用域,否则与一般函数相同。...,即A类向B类开放其Private/Protectd内容, 让B直接存取 友元类:一个类可以作另一个类的友元 友元类的所有成员函数都是另一个类的友元函数 友元类的声明: friend class 类名;

    76300

    【C++ 语言】面向对象 ( 成员函数 | 常量函数 | 友元函数 | 友元类 | 单例类 )

    友元函数 ---- 外部访问类中的私有成员变量 , 有两种方法 , 一种是使用共有的成员方法访问 , 另一种是在友元函数中访问 ; 友元函数 , 在友元函数中 , 可以从类的外部访问类中的私有成员变量..., 友元函数声明方法 friend 返回值类型 方法名称 ( 参数列表 ) ; ; Student.h 中友元函数声明 //友元函数声明 , 可以在外部修改类中的私有成员变量 friend void...changeAge(Student*); 友元函数实现 , 友元函数并不与类实现写在一起 , 而是在使用的位置进行实现 , 这里在 main() 函数所在的文件中进行实现 , 在该实现的友元函数中 ,...---- 友元类 , 友元类中所有的成员函数都是该类的友元函数 , 可以访问该类对象的私有成员变量 ; 友元类声明 , 声明友元类方法 friend class 友元类名称; , 友元类中所有的成员函数都是该类的友元函数...; Student.h 中友元类声明 //声明友元类 , 可以在友元类中访问修改类中的私有成员变量 //友元类中的所有的成员函数都是友元函数 friend class Teacher; 友元类定义与实现

    53120

    C++类的this指针,静态成员,友元函数友元类

    ,它可以用来指向调用对象,并且只可以在成员函数中调用,对于全局函数,静态函数,友元函数,都不能使用this指针。...友元函数友元类 所谓友元函数,就是在类中,用friend关键字声明一个函数,这个函数的声明在类中,但不作为类的成员函数,虽然友元函数不属于成员函数,却可以访问类中的成员,不论成员是public,pirvate...对于友元函数,放在public和private,或者是protected,都是可以的。...class Animal { private: string name; friend void getName(); }; void getName() { //业务逻辑 } 为什么要引入友元函数...因为是需要友元来共享数据,那么大多数情况,友元函数都是有参数的, 因为友元函数没有this指针,则参数要有三种情况: 要访问非static成员时,需要对象做参数; 要访问static成员或全局变量时

    1.5K10

    日期时间合并输出(友元函数)

    4位,月和日的输出长度固定2位,不足2位补0 例如2017年3月3日19时5分18秒 则输出为:2017-03-03 19:05:18 程序要求 1、把函数Display作为时间类、日期类的友元 2、分别创建一个日期对象和时间对象...2017 3 3 19 5 18 1988 12 8 5 16 4 输出样例1 2017-03-03 19:05:18 1988-12-08 05:16:04 思路分析 嗯,这道题不难,就是略微考查友元函数的知识...友元函数就是把一个不属于类的函数声明为自己这个类的朋友给予这个函数可以访问私有数据的权限。 题目的意思就是要我们把日期和时间合并起来输出,要求这个合并是在友元函数里面完成。...include using namespace std; class CDate; class CTime { private: int hour,min,sec; public: friend...input() { cin>>hour>>min>>sec; } }; class CDate { private: int year,month,day; public: friend

    16410
    领券