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

同名的友元函数和方法

是指在类中定义了一个同名的友元函数和一个成员方法。友元函数是在类的外部定义的,但被声明为该类的友元函数,从而可以访问该类的私有成员。成员方法是在类内部定义的,可以直接访问该类的私有成员。

同名的友元函数和方法可以通过不同的方式来使用和调用,具体取决于调用者和函数的访问权限。下面是对同名的友元函数和方法的一些讨论:

  1. 访问权限:友元函数可以直接访问类的私有成员,而成员方法也可以直接访问类的私有成员。它们的区别在于,友元函数不属于类的成员,不需要通过类的实例来调用,而成员方法只能通过类的实例来调用。
  2. 调用方式:友元函数可以通过函数名直接调用,而成员方法需要通过类的实例来调用。例如,如果有一个类A,定义了一个友元函数foo()和一个成员方法foo(),可以这样调用它们:
    • 友元函数foo()的调用方式:foo()
    • 成员方法foo()的调用方式:A a; a.foo()
  • 使用场景:同名的友元函数和方法可以用于不同的场景。友元函数通常用于需要访问类的私有成员,但又不希望将其作为类的成员方法的情况下。成员方法则常用于对类的实例进行操作和访问私有成员的情况。

腾讯云相关产品和产品介绍链接地址: 暂无,因为腾讯云和其他流行的云计算品牌商在这个问答中不能提及。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

函数

提供了不同类成员函数之间、类成员函数与一般函数之间进行数据共享机制。通过,一个不同函数或另一个类中成员函数可以访问类中私有成员保护成员。...函数函数是可以直接访问类私有成员非成员函数。...一个函数可以是多个类函数,只需要在各个类中分别声明。 函数调用与一般函数调用方式原理一致。...类 : 所有成员函数都是另一个类函数,都可以访问另一个类中隐藏信息(包括私有成员保护成员)。...如果我们决定该函数必须作为一个类成员函数并又是另一个类,则成员函数声明声明如下: 1: class Window; 2: 3: class Screen

1.1K20

C++函数

函数 C++可以通过使用关键词friend在一个类内声明一个全局非类内成员函数作为自己函数,给予它高度访问权限,允许这个函数访问自己类内所有成员(包括私有成员)。...需要注意是必须先声明类,再定义作为函数全局函数,不然系统会说找不到Circle。...,首先是必须先声明一个类,然后要声明函数必须先于类声明,就是说,不管怎样,得先有声明才能使用。...还有就是声明另一个类成员函数函数时要加上类名作用域运算符。 ...还是我们Point类Circle类,稍作修改一下: class Circle; class Point { friend Circle; }; 注意 函数是单向,我把你当作朋友,但在你心里

17820
  • C++函数

    在 C++ 中,一个类中可以有 public、protected、private 三种属性成员,通过对象可以访问 public 成员,只有本类中函数可以访问本类 private 成员。...现在,我们来介绍一种例外情况——(friend)。 借助(friend),可以使得其他类中成员函数以及全局范围内函数访问当前类 private 成员。...在 C++ 中,这种友好关系可以用 friend 关键字指明,中文多译为“”,借助可以访问与其有好友关系类中私有成员。...如果你对“”这个名词不习惯,可以按原文 friend 理解为朋友。 函数 在当前类以外定义、不属于当前类函数也可以在类中声明,但要在前面加 friend 关键字,这样就构成了函数。...函数可以是不属于任何类非成员函数,也可以是其他类成员函数函数可以访问当前类中所有成员,包括 public、protected、private 属性

    18350

    C++函数使用

    1.介绍 在C++中,(friend)是一种机制,允许某个类或函数访问其他类私有成员。通过,可以授予其他类或函数对该类私有成员访问权限。...关系在一些特定情况下很有用,例如在类之间共享数据或实现特定功能。 可以分为两种类型:类函数。...但是,有时需要定义一些函数,这些函数不是类一部分,但又需要频繁地访问类数据成员,这时可以将这些函数定义为该函数函数。除了函数外,还有类,两者统称为。...作用是提高了程序运行效率(即减少了类型检查安全性检查等都需要时间开销),但它破坏了类封装性隐藏性,使得非成员函数可以访问类私有成员。...示例2: 分别定义一个类A类B ,各有一个私有整数成员变量通过构造函数初始化;类A有一个成员函数Show(B &b)用来打印AB私有成员变量,请分别通过函数类来实现此功能。

    33640

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

    一、函数简介 在 C++ 语言中 , " 函数 " 是 与 类 相关联函数 , " 函数 " 不是类成员函数 , 但是可以访问类 private 私有成员 protected 保护成员...; 函数可以是 全局函数 本类成员函数 其他类成员函数 函数 是 类 朋友 , 在 函数 中 , 可以修改 类对象 中 私有属性 保护属性 ; 函数 破坏了 类 封装性...; 二、函数声明 1、函数语法 " 函数 " 需要在 类 中进行声明 , 使用 friend 关键字修饰函数 , 语法如下 : class ClassName { // 成员变量成员函数...函数 函数名 ; arguments : 是 函数 参数列表 ; 2、函数声明不受访问控制限制 " 函数 " 声明 , 不受类访问控制限制 , 可以在任何地方定义 , 如...访问 类中成员 ; 3、函数参数要求 " 函数 " 中 , 需要有一个参数是 类对象 指针 ; 如下 Student 类函数 , 需要有一个参数是 Student 类对象指针 , 可以访问对象

    1.4K20

    C++_函数

    1.知识点介绍 类特性之一就是封装,而就是C++为用户提供打破这种封装手段,分为函数对象 2.函数 1、函数,他只是一个函数函数不是类成员,通过类对象是无法访问...2、函数,无论声明在类中任访问属性下都可以,不影响他调用访问 !!!...fun(); // 私有函数成员 friend void FFun(CA& a); // 类外定义函数 friend void FFun1(CA& a) // 类中定义函数 {...类是一个单独类,只不过函数一样,在类中声明了一个类,在这个类中同样也 可以访问该类中所有成员,在A类中声明B类为A类类,那么在B类中就可以访问A类中所有成员 // 示例...单方向: A是B朋友, A可以访问B数据, B不可以访问A数据 不传递: A是B朋友, B是C朋友, 但AC没有关系 不继承: A是B朋友, C是B儿子, AC没有关系

    52720

    C++函数

    函数是一个可以访问类私有成员函数,并且它不属于这个类。 类则是可以访问另一个类私有成员类。...声明函数/类,则需要这样做: 比如,我们需要生命ClassTwo是ClassOne类,那么我们要在ClassOne中加入这么一行语句: friend class ClassTwo; 相应...这就是说,如果函数B要成为类A函数,那么必须在A中声明B是函数。 并且,朋友关系不具有对称性。假设有两个类A、B,B是A类,但是并不意味着A是B类。...(除非在B中声明A是它类) 朋友关系不具有传递性。B是A类,C是B类,那么并不意味着C一定是A类。...,我们一般将函数声明放在类所有修饰符前端。

    31720

    从零开始学C++之友函数

    一、介绍 我们知道,类成员函数可以访问同类其他成员函数,包括公有、私有保护成员。而类外部函数只能访问类公有成员。 是一种允许非类成员函数访问类非公有成员一种机制。...可以把一个函数指定为类,也可以把整个类指定为另一个类。...函数 类 二、函数 函数在类作用域外定义,但它需要在类体中进行说明 为了与该类成员函数加以区别,定义方式是在类中用关键字friend说明该函数,格式如下: friend  ...类型 函数名(参数表); 作用在于提高程序运行效率 函数注意事项: 1、函数不是类成员函数,在函数体中访问对象成员,必须用对象名加运算符“.”加对象成员名。...3、某类函数作用域并非该类作用域。如果该函数是另一类成员函数,则其作用域为另一类作用域,否则与一般函数相同。

    74900

    C++:11---函数

    一、(friend) 概念:通过,打破了类封装性,可以访问类内所有成员 分类:函数类 二、函数 概念:函数是一个普通函数,不属于类,但需要在类内表明关系...函数可访问类内所有成员,但类不可以访问函数内部数据 格式 函数可以在类内声明时,需要加上关键字friend 函数可以在类外声明,类外定义。...类也不属于类成员,不拥有this指针 一个类A成为另一个类B类时,类A就可以访问类B所有成员 形式分为两种 使整个类成为 使类中某一部分函数成为 使整个类成为 class...四、特点 单方向性:即可访问类,但是类不能访问 不传递性:A是B,C是A,但C不是B 不继承:在上面的类中有介绍 ?...五、声明作用域关系 使用一个时,要考虑到其声明作用域问题,请看下面代码 class X { public: friend void f(){} //函数在类内定义 X()

    62720

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

    受保护成员 ; B 是 A 好朋友 , B 可以访问 A 所有成员 ; 2、类声明 声明一个 类 B 是 另一个类 A 类 , 可以 在类 A 中使用 friend 关键字来声明 ;..., 但是 A 不是 B 类 , A 不能访问 B 私有保护成员 ; 4、类继承性 类 关系不具有继承性 , 即 子类不能直接继承父类类 ; 5、类作用 类主要作用 :...作为 某个类 数据操作 辅助类 ; 作为 多个类 之间 传递信息 辅助类 ; 二、函数由来 1、函数引入 函数 会破坏 C++ 面向对象 封装性 , 那么为什么还会出现该机制呢...有些编程场景 , 需要破坏类封装性 , 需要访问类私有属性 ; Java 中给出方案是 反射机制 ; C++ 中给出方案是 函数 类 ; 2、Java 反射机制 Java 类编译成...最终 函数库 中 都是汇编指令 , 机器码指令 , 如果要从指令中查找指定私有属性 , 该操作难度很大 ; 三、类代码示例 ---- 在 Student 类中 , 定义了类 StudentCaculate

    1.8K10

    C++ 函数

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

    80220

    复数运算(函数

    题目描述 复数类声明如下: 要求如下: 1.实现复数类函数addComoutCom。 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类,这意味着我们需要在函数体内创建一个complex类对象,为了方便,我们使用带参数构造函数,直接将两个复数实部虚部做运算作为构造函数参数,然后直接返回这个类对象

    13820

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

    ,它可以用来指向调用对象,并且只可以在成员函数中调用,对于全局函数,静态函数函数,都不能使用this指针。...函数类 所谓函数,就是在类中,用friend关键字声明一个函数,这个函数声明在类中,但不作为类成员函数,虽然函数不属于成员函数,却可以访问类中成员,不论成员是public,pirvate...对于函数,放在publicprivate,或者是protected,都是可以。...因为是需要来共享数据,那么大多数情况,函数都是有参数, 因为函数没有this指针,则参数要有三种情况: 要访问非static成员时,需要对象做参数; 要访问static成员或全局变量时...,则不需要对象做参数 如果做参数对象是全局对象,则不需要对象做参数 至于类,也是一样。

    1.5K10

    C++ 函数

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

    20720

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

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

    37820

    EasyC++66,函数

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

    25010

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

    this->age; } 函数 ---- 外部访问类中私有成员变量 , 有两种方法 , 一种是使用共有的成员方法访问 , 另一种是在函数中访问 ; 函数 , 在函数中 , 可以从类外部访问类中私有成员变量...可以访问类对象私有成员变量方法 ; 003_Object_Oriented.cpp ( main函数定义文件 ) 中友函数实现 //引用 Student 类声明头文件 #include "Student.h...() 构造方法 age : 88 ~Student() 析构方法 类 ---- 类 , 类中所有的成员函数都是该类函数 , 可以访问该类对象私有成员变量 ; 类声明 , 声明方法...; 可以在定义时候 , 直接将该方法实现 ; //Student 中类 , 该类中所有函数都是 Student 对象函数 class Teacher { public: //类中声明方法...::Instance() { } //实现 getInstance 静态成员函数 //方法实现中 , 可以使用 this-> 调用成员变量或成员方法 //静态成员变量成员函数可以直接调用 Instance

    51220

    日期时间合并输出(函数

    现在编写一个全局函数把时间日期对象合并起来一起输出, 函数原型为:void Display(CDate &, CTime &) 函数输出要求为: 1、时分秒输出长度固定2位,不足2位补0 2、年份输出长度固定为...4位,月输出长度固定2位,不足2位补0 例如2017年3月3日19时5分18秒 则输出为:2017-03-03 19:05:18 程序要求 1、把函数Display作为时间类、日期类 2、分别创建一个日期对象时间对象...,保存日期输入时间输入 3、调用Display函数实现日期时间合并输出 输入 第一行输入t表示有t组示例 接着一行输入三个整数,表示年月日 再接着一行输入三个整数,表示时分秒 依次输入t组示例...1988-12-08 05:16:04 思路分析 嗯,这道题不难,就是略微考查函数知识。...函数就是把一个不属于类函数声明为自己这个类朋友给予这个函数可以访问私有数据权限。 题目的意思就是要我们把日期时间合并起来输出,要求这个合并是在函数里面完成。

    16410

    运算符成员函数函数重载

    本文只介绍一下运算符重载两种方式,成员函数重载函数重载,并不具体到某些运算符具体案例。...+函数 // 此句等同于 c3 = c1.operator+(c2) Complex c3 = c1 + c2; c3.display(); return 0; } 函数重载,与成员函数不同是...,全局函数需要传递两个参数,因为他并没有在类中,所以成员函数this必须转化一个为operator+参数,否则无法完成函数功能: #include using namespace std;...class Complex { public: Complex(int x, int y) :_x(x), _y(y){} // 将一个全局 operator+ 函数声明为Complex函数 friend...x << endl; cout << “_y = “ << _y << endl; } private: int _x; int _y; }; // 函数实现,与类成员函数不同是,this变成了

    23740
    领券