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

运算符成员函数函数重载

本文只介绍一下运算符重载的两种方式,成员函数重载函数重载,并不具体到某些运算符的具体案例。...// 此句等同于 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...() { cout << “_x = “ << _x << endl; cout << “_y = “ << _y << endl; } private: int _x; int _y; }; // 函数的实现

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

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

一、函数简介 在 C++ 语言中 , " 函数 " 是 与 类 相关联的函数 , " 函数 " 不是类的成员函数 , 但是可以访问类的 private 私有成员 和 protected 保护成员...; 函数可以是 全局函数 本类的成员函数 其他类的成员函数 函数 是 类的 朋友 , 在 函数 中 , 可以修改 类对象 中的 私有属性 和 保护属性 ; 函数 破坏了 类的 封装性...; 二、函数声明 1、函数语法 " 函数 " 需要在 类 中进行声明 , 使用 friend 关键字修饰函数 , 语法如下 : class ClassName { // 成员变量和成员函数...函数函数名 ; arguments : 是 函数 的 参数列表 ; 2、函数声明不受访问控制限制 " 函数 " 的 声明 , 不受类的访问控制限制 , 可以在任何地方定义 , 如...: 在 private: , protected: , public: , 下声明 函数 , 并不影响到 函数 的使用 ; 只要 声明了 " 函数 " , 不管在什么位置声明 , 都可以正常通过该函数

62220

C++ 操作符重载形式——成员函数 or 函数

一般来说,C++ 运算符重载可采用成员函数函数,二者都可以访问类的私有成员,那么该采用哪一种呢?首先看一下二者的区别。...当重载为成员函数时,会隐含一个 this 指针;当重载函数时,不存在隐含的 this 指针,需要在参数列表中显示添加操作数。...当重载为成员函数时,只允许右参数的隐式转换;当重载函数时,能够接受左参数和右参数的隐式转换。...有些双目运算符是不能重载函数的,比如赋值运算符=、函数调用运算符()、下标运算符[]、指针运算符->等,因为这些运算符在语义上与this都有太多的关联。...比如=表示“将自身赋值为…”,[]表示“自己的第几个元素”,如果将其重载函数,则会出现语义上的不一致。 还有一个需要特别说明的就是输出运算符<<。

94730

C++运算符重载形式——成员函数or函数

一般来说,C++运算符重载可采用成员函数函数,二者都可以访问类的私有成员,那么该采用哪一种呢?首先看一下二者的区别。...(1)当重载为成员函数时,会隐含一个this指针;当重载函数时,不存在隐含的this指针,需要在参数列表中显示地添加操作数。...(2)当重载为成员函数时,只允许右参数的隐式转换;当重载函数时,能够接受左参数和右参数的隐式转换。...有些双目运算符是不能重载函数的,比如赋值运算符=、函数调用运算符()、下标运算符[]、指针运算符->等,因为这些运算符在语义上与this都有太多的关联。...比如=表示“将自身赋值为…”,[]表示“自己的第几个元素”,如果将其重载函数,则会出现语义上的不一致。 还有一个需要特别说明的就是输出运算符<<。

2.2K20

函数

提供了不同类的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。通过,一个不同函数或另一个类中的成员函数可以访问类中的私有成员和保护成员。...函数函数是可以直接访问类的私有成员的非成员函数。...一个函数可以是多个类的函数,只需要在各个类中分别声明。 函数的调用与一般函数的调用方式和原理一致。...类 : 类的所有成员函数都是另一个类的函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)。...例如如果Screen 类必须把Window 类的成员函数声明为,而Window类必须把Screen 类的成员函数声明为。该怎么办呢?

1K20

C++函数

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

16220

C++函数

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

16650

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类中的所有成员 // 示例

51320

C++函数

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

30420

C++:11---函数

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

61220

从零开始学C++之运算符重载(一):以成员函数方式重载、以函数方式重载

运算符(参数表); 成员函数定义的格式: 函数类型 类名::operator 运算符(参数表) { 函数体; } 三、非成员函数重载 函数原型的格式: friend...函数类型 operator 运算符(参数表); 函数定义的格式: 函数类型 类名::operator 运算符(参数表) { 函数体; } 四、运算符重载的原则 运算符重载不允许发明新的运算符...*fp)(5); // 这么用,相当于调用obj.func(5); 一般情况下,单目运算符最好重载为类的成员函数;双目运算符则最好重载为类的函数。...以下一些双目运算符不能重载为类的函数:=、()、[]、->。...类型转换运算符只能以成员函数方式重载(见这里) 流运算符只能以的方式重载(见这里) #ifndef _COMPLEX_H_ #define _COMPLEX_H_ class Complex

92600

复数运算(函数

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

12420

C++ 函数

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

77520

C++ 函数

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

18820

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

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

35820

C++函数类的使用

1.介绍 在C++中,(friend)是一种机制,允许某个类或函数访问其他类的私有成员。通过,可以授予其他类或函数对该类的私有成员的访问权限。...函数(Friend Function) 可以将一个函数声明为一个类的函数。...这样,在函数中可以直接访问该类的私有成员。 函数可以是非成员函数,也可以是其他类的成员函数函数通常在类的声明部分或声明外部使用 friend 关键字来声明。...当某个类需要提供特定函数或操作给其他类使用,但这些函数需要访问类的私有成员时,可以使用函数。 在重载运算符或实现某些特定功能时,可以提供对类私有成员的直接访问。...但是,有时需要定义一些函数,这些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数函数。除了函数外,还有类,两者统称为

28940

【C++】运算符重载 ③ ( 二运算符重载 | 运算符重载步骤 | 全局函数 实现 运算符重载 | 成员函数 实现 运算符重载 | 函数 实现 运算符重载 )

实现 运算符重载 使用 全局函数 实现 运算符重载 , 重载 + 运算符 ; 全局函数 实现 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载的运算符 ,...二、函数实现运算符重载 1、函数实现运算符重载 如果类中的成员都是私有成员 , 在 运算符重载 中 , 需要访问 私有成员 进行计算 , 在 成员函数 中 , 可以正常访问 私有成员 , 但是...在 全局函数 中 , 就无法访问 私有成员 了 ; 此时就需要将 全局函数 声明为 类的 函数 , 这样才能再 该 全局函数 ( 函数 ) 中访问 私有成员 ; 类中的 成员变量 是 私有成员...+ s2.age, s1.height + s2.height); return student; }; 需要将 全局函数 声明为 函数 , 此时 使用 全局函数 实现 运算符重载 正常执行 ;...private: friend Student operator+(Student& s1, Student& s2); 2、代码示例 - 函数实现运算符重载 代码示例 : #include "

15840

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

一、类简介 1、类引入 在 C++ 语言中 , " 类 " 是 一个类 与 另外一个类 的 特殊类关系累 , 在 类 A 的 " 类 " B 中 , 可以直接访问 A 类 的 私有成员..., 但是 A 不是 B 的类 , A 不能访问 B 的私有和保护成员 ; 4、类继承性 类 关系不具有继承性 , 即 子类不能直接继承父类的类 ; 5、类作用 类主要作用 :...作为 某个类的 数据操作 辅助类 ; 作为 多个类 之间 传递信息 的 辅助类 ; 二、类和函数由来 1、类和函数引入 类 和 函数 会破坏 C++ 面向对象 的封装性 , 那么为什么还会出现该机制呢...有些编程场景 , 需要破坏类的封装性 , 需要访问类的私有属性 ; Java 中给出的方案是 反射机制 ; C++ 中给出的方案是 函数类 ; 2、Java 反射机制 Java 类编译成...// 在 StudentCaculate 类中可以访问 Student 类中的私有成员 friend class StudentCaculate; // 声明函数 friend void

58410

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

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

71700
领券