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

C++运算符重载函数重载

所谓重载,就是赋予新含义。函数重载(Function Overloading)可以让一个函数名有多种功能,在不同情况下进行不同操作。...C++函数重载 在同一个作用域内,可以声明几个功能类似的函数,但这些同名函数形式参数(指参数个数、类型或者顺序)必须不同。不能仅仅通过函数返回类型不同来重载函数。...C++运算符重载 运算符重载其实就是定义一个函数,在函数体内实现想要功能,当用到该运算符时,编译器会自动调用这个函数。也就是说,运算符重载是通过函数实现,它本质上是函数重载。...运算符重载格式为: 返回值类型 operator 运算符名称 (形参表列){     //TODO: } operator是关键字,专门用于定义重载运算符函数。...我们可以将operator 运算符名称这一部分看做函数名。 下面看一个例子,以下代码定义了一个复数类,通过运算符重载,可以用+号实现复数加法运算:

70720

C++ 重载运算符重载函数

C++ 重载运算符重载函数 C++ 允许在同一作用域中某个函数运算符 指定多个定义,分别称为函数重载运算符重载。...当您调用一个重载函数重载运算符 时,编译器通过把您所使用参数类型与定义中参数类型进行比较,决定选用最合适定义。选择最合适重载函数重载运算符过程,称为重载决策。...C++函数重载 在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数形式参数(指参数个数、类型或者顺序)必须不同。您不能仅通过返回类型不同来重载函数。...中运算符重载 您可以重定义或重载大部分 C++ 内置运算符。...这样,您就能使用自定义类型运算符重载运算符是带有特殊名称函数函数名是由关键字 operator 和其后要重载运算符符号构成。与其他函数一样,重载运算符有一个返回类型和一个参数列表。

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

C++ 重载运算符重载函数

C++ 允许在同一作用域中某个函数运算符指定多个定义,分别称为函数重载运算符重载。...当您调用一个重载函数重载运算符时,编译器通过把您所使用参数类型与定义中参数类型进行比较,决定选用最合适定义。选择最合适重载函数重载运算符过程,称为重载决策。...C++函数重载在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数形式参数(指参数个数、类型或者顺序)必须不同。您不能仅通过返回类型不同来重载函数。...C++ 内置运算符。...这样,您就能使用自定义类型运算符重载运算符是带有特殊名称函数函数名是由关键字 operator 和其后要重载运算符符号构成。与其他函数一样,重载运算符有一个返回类型和一个参数列表。

2K30

C++学习之路——函数重载运算符重载

一、函数重载 C++允许在同一作用域中某个函数运算符指定多个定义,分 别称为函数重载运算符重载 重载声明是指一个与之前已经在该作用域内声明过函数或方法 具有相同名称声明,但是它们参数列表和实现不相同...当您调用一个重载函数重载运算符时,编译器通过把您所使用参数类型与定义中参数类型进行比较,决定选用最合适定义。选择最合适重载函数重载运算符过程,称为重载决策。...C++函数重载 在同一个作用域内,可以声明几个功能类似的同名函数,但是这 些同名 函数形式参数(指参数个数、类型或者顺序)必须不同。 您不能仅通过返回类型不同来重载函数。...下面的实例中,同名函数 print() 被用于输出不同数据类型: 二、运算符重载 重载运算符是带有特殊名称函数函数名是由关键字 oper ator 和其后要重载运算符符号构成。...大多数重载运算符可被定义为普通非成员函数或者被定义为类成 员函数

38720

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

一、运算符重载步骤 1、运算符重载步骤说明 运算符重载步骤 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 如 operate+ 是重载加号运算符 ; 然后...实现 运算符重载 使用 全局函数 实现 运算符重载 , 重载 + 运算符 ; 全局函数 实现 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 ,..., 编写具体运算符操作业务逻辑 ; // 使用 全局函数 实现 运算符重载 // 重载 + 运算符 // 实现两个 Student 对象相加 Student operator+(Student&...实现 运算符重载 使用 成员函数 实现 运算符重载 , 重载 - 运算符 ; 成员函数 实现 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 ,...二、友元函数实现运算符重载 1、友元函数实现运算符重载 如果类中成员都是私有成员 , 在 运算符重载 中 , 需要访问 私有成员 进行计算 , 在 成员函数 中 , 可以正常访问 私有成员 , 但是

14740

C++运算符重载 ② ( 类内部定义云算符重载 - 成员函数 | 类外部定义运算符重载 - 全局函数 | 可重载运算符 )

一、运算符重载本质 运算符重载本质是 " 函数调用 " ; 当使用 + 将 个对象相加时 , C++ 编译器会查找是否有定义运算符重载函数 ; // 自定义类型相加 Student s1(10,...120), s2(18, 170); Student s3, s4, s5; // 运算符重载 s5 = s1 + s2; 如果找到了 运算符重载 函数 , 就会执行该函数内容 , 将 2...二、运算符重载语法 - 类内部定义云算符重载 ( 成员函数 ) 1、运算符重载函数语法说明 C++ 中允许重新定义运算符行为 , 如常用加减成熟运算符 , 都可以进行重载操作 ; 可以自定义运算符操作..., 可以使用函数形式调用 , 也可以使用运算符进行运算 , 其 本质还是类函数调用 ; 2、运算符重载函数调用 重载运算符完整调用 , 即调用上面定义整个 operator+ 方法 , 这是采用正式函数调用方式...: 90 三、运算符重载语法 - 类外部定义运算符重载 ( 全局函数 ) ---- 1、运算符重载函数语法说明 类外部定义运算符重载 , 运算符重载也可以定义在类外部 , 可以是任意包含类头文件代码中

20610

C++运算符重载 ⑧ ( 左移运算符重载 | 友元函数 成员函数 实现运算符重载 | 类对象 使用 左移运算符 )

一、左移运算符重载 1、友元函数 / 成员函数 实现运算符重载 运算符重载 正规写法一般都是 使用 成员函数 形式 实现 ; 加法 + , 减法 - , 自增 ++ , 自减 - - , 一般都使用成员函数...实现 运算符重载 ; 上述 运算符重载 既可以使用 成员函数 进行重载 , 又可以使用友元函数进行重载 ; 只能使用 成员函数 重载运算符 : = , [] , () , -> 等操作符 只能使用...成员函数 进行重载 ; 只能使用 友元函数 重载运算符 : 无法修改 左操作数 情况下 , 只能使用 全局函数 ( 需声明 友元函数 ) 进行重载 ; 2、类对象 使用 左移运算符 平时使用 cout...(或没有可接受转换) 如果想要使用 cout << s1 << endl; 用法输出对象到日志中 , 需要重载 左移操作符 ; 3、左移运算符 << 重载 使用 全局函数 实现 左移运算符 << 重载...: 首先 , 写出函数名 , cout << s1 左移操作符重载 , 函数名规则为 " operate " 后面跟上要重载运算符 , 函数名是 operate<< ; operate<< 然后 ,

18910

C++运算符重载案例 - 字符串类 ⑤ ( 重载 大于 > 运算符 | 重载 小于 < 运算符 | 重载 右移 >> 运算符 - 使用全局函数重载 | 代码示例 )

一、重载 大于号 / 小于号 运算符 - 使用成员函数重载 1、重载 大于 > 运算符 使用 成员函数 实现 等于判断 == 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate...} 2、重载 小于 < 运算符 使用 成员函数 实现 小于 < 运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 要对 String a...<< s , 是将 标准输入流 cin 中内容输入到 s 对象中 ; 使用 成员函数 实现 右移 >> 运算符 重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符...// 调用拷贝构造函数 String s3 = s2; // 调用重载等号运算符函数, 右操作数是 String 对象 s1 = s2; // 调用重载等号运算符函数, 右操作数是...字符串常量值 , char* 指针类型 s3 = "Jerry"; // 调用重载下标运算符函数 char c = s3[3]; // 调用 重载 左移运算符 函数 cout <<

32220

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

运算符重载C++多态重要实现手段之一。通过运算符重载运算符功能进行特殊定制,使其支持特定类型对象运算,执行特定功能,增强C++扩展功能。...一般来说,C++运算符重载可采用成员函数和友元函数,二者都可以访问类私有成员,那么该采用哪一种呢?首先看一下二者区别。...(2)当重载为成员函数时,只允许右参数隐式转换;当重载为友元函数时,能够接受左参数和右参数隐式转换。...,最好将其重载为友元函数;而对于单目运算符,则最好重载为成员函数。...有些双目运算符是不能重载为友元函数,比如赋值运算符=、函数调用运算符()、下标运算符[]、指针运算符->等,因为这些运算符在语义上与this都有太多关联。

2.2K20

C++ 运算符重载

C++运算符重载概念和原理 2. C++重载=(C++重载赋值运算符) 3. C++深拷贝和浅拷贝(C++深复制和浅复制) 4. C++运算符重载为友元函数 5....C++实现可变长度动态数组 6. C++重载>(C++重载输出运算符和输入运算符) 7. C++重载()(强制类型转换运算符) 8. C++重载++和--(自增和自减运算符) 9....C++运算符重载注意事项以及汇总  1 C++运算符重载概念和原理   如果不做特殊处理,C++ +、-、*、/ 等运算符只能用于对基本类型常量或变量进行运算,不能用于对象之间运算。...运算符重载目的是使得 C++运算符也能够用来操作对象。 运算符重载实质是编写以运算符作为名称函数。不妨把这样函数称为运算符函数。...9 C++运算符重载注意事项以及汇总  在 C++ 中进行运算符重载时,有以下问题需要注意:  重载运算符含义应该符合原有用法习惯。

1.1K20

C++运算符重载 ⑦ ( 一元运算符重载 | 后置运算符重载 | 使用 全局函数 实现 后置 ++ 自增运算符重载 | 使用 成员函数 实现 后置 -- 自减运算符重载 )

上一篇博客 【C++运算符重载 ⑥ ( 一元运算符重载 | 后置运算符重载 | 前置运算符重载 与 后置运算符重载 区别 | 后置运算符重载添加 int 占位参数 ) 中 , 讲解了 前置运算符重载...全局函数 实现 后置 ++ 自增运算符重载 使用 全局函数 实现 后置 ++ 自增运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 函数名是 operate...// 使用 全局函数 实现 后置 ++ 自增运算符重载 // 重载 后置 ++ 运算符 // 实现 1 个 Student 对象 自增运算 // 先使用 参数中 Student& s 对象 , 再自增...++; return ret; }; 2、使用 成员函数 实现 后置 – 自减运算符重载 使用 成员函数 实现 后置 – 自减运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate..." 后面跟上要重载运算符 , 函数名是 operate-- ; operate-- 然后 , 根据操作数 写出函数参数 , 参数一般都是 对象引用 ; 此处由于是一元运算符重载 , 只需要对本对象进行操作

16140

C++运算符重载 ④ ( 一元运算符重载 | 使用 全局函数 实现 前置 ++ 自增运算符重载 | 使用 全局函数 实现 前置 - - 自减运算符重载 )

实现 前置 ++ 自增运算符重载 使用 全局函数 实现 前置 ++ 自增运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 函数名是 operate..., 实现函数体 , 编写具体运算符操作业务逻辑 ; // 使用 全局函数 实现 前置 ++ 自增运算符重载 // 重载 前置 ++ 运算符 // 实现 1 个 Student 对象 自增运算 // 由于...s.height++; return s; }; 为了使全局函数中能访问 Student 类私有成员 , 需要将该全局函数声明为 友元函数 ; // 使用 全局函数 实现 前置 ++ 自增运算符重载..., 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 函数名是 operate-- ; operate-- 然后 , 根据操作数 写出函数参数 , 参数一般都是 对象引用...s) 最后 , 实现函数体 , 编写具体运算符操作业务逻辑 ; // 使用 全局函数 实现 前置 -- 自减运算符重载 // 重载 前置 -- 运算符 // 实现 1 个 Student 对象 自减运算

15420

c++运算符重载

关键字operator 运算符重载本质是函数调用 1. 重载操作符必须具有一个类类型或枚举类型操作数。这条规则强制重载操作符不能重新定义用于内置类型对象操作符含义。...为类设计重载操作符时候,必须选择是将操作符设置为类成员还是普通非成员函数。在某些情况下,程序没有选择,操作符必须是成员;在另外一些情况下,有些经验可以指导我们做出决定。下面是一些指导: a....d 对称操作符,如算术操作符,相等操作符,关系操作符和位操作符,最好定义为普通非成员函数。 e io操作符必须定义为非成员函数重载为类友元。...返回类型 operator运算符(参数列表) {代码..;} 一元运算符重载 例如负号 返回类型 operator-() {   成员变量=-成员变量;   return *this; } 前置加加(或减减...)与后置加加(或减减)  后置参数列表需要一个象征意义int形参 二元运算符重载 例如加号 返回类型 operator+(类型 a,类型 b)  //全局函数 {       类型 c;   c.成员变量

79750

C++干货基地】特殊函数函数:赋值运算符重载

一、运算符重载 C++ 中为了增加代码可读性运算符重载是具有特殊函数函数,也具有其返回值类型,函数名字以及参数列表,其返回值类型与参数列表与普通函数类似。...函数名字为:关键字operator后面接需要重载运算符符号。...2.2 赋值运算符重载行为 赋值运算符重载既然也是六大默认成员函数之一那么肯定也是我们不写自动生成一个默认复制运算符重载 ,那么究竟有什么行为呢?...构造函数和析构函数他们行为都是对内置类型不处理对自动定义类型调用他们析构或者构造函数,而 赋值运算符重载是和 拷贝构造一样行为,我们不写会自定生成一个默认函数,默认赋值运算符重载 以值方式逐字节拷贝...++形成能正确重载 C++规定:后置++重载时多增加一个int类型参数,但调用函数时该参数不用传递,编译器自动传递 Date operator++(int) { Date tmp(*this)

3700

C++运算符重载 ⑤ ( 一元运算符重载 | 使用 成员函数 实现 前置 ++ 自增运算符重载 | 使用 成员函数 实现 前置 - - 自减运算符重载 )

一、一元运算符重载 1、使用 成员函数 实现 前置 ++ 自增运算符重载 使用 全局函数 实现 前置 ++ 自增运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符..., 编写具体运算符操作业务逻辑 ; // 使用 成员函数 实现 前置 ++ 自增运算符重载 // 重载 前置 ++ 运算符 // 实现 1 个 Student 对象 自增运算 // 由于 参数中...前置 - - 自减运算符重载 : 首先 , 写出函数名 , 函数名规则为 " operate " 后面跟上要重载运算符 , 函数名是 operate-- ; operate-- 然后 , 根据操作数...编写具体运算符操作业务逻辑 ; // 使用 成员函数 实现 前置 -- 自减运算符重载 // 重载 前置 -- 运算符 // 实现 1 个 Student 对象 自增运算 // 由于 参数中...实现 前置 ++ 自增运算符重载 // 重载 前置 ++ 运算符 // 实现 1 个 Student 对象 自增运算 // 由于 参数中 Student& s 中属性发生了变化 // 返回时仍需要返回

15140

C++ 运算符重载

C++运算符重载概念和原理 2. C++重载=(C++重载赋值运算符) 3. C++深拷贝和浅拷贝(C++深复制和浅复制) 4. C++运算符重载为友元函数 5....C++实现可变长度动态数组 6. C++重载>(C++重载输出运算符和输入运算符) 7. C++重载()(强制类型转换运算符) 8. C++重载++和--(自增和自减运算符) 9....C++运算符重载注意事项以及汇总  1 C++运算符重载概念和原理   如果不做特殊处理,C++ +、-、*、/ 等运算符只能用于对基本类型常量或变量进行运算,不能用于对象之间运算。...运算符重载目的是使得 C++运算符也能够用来操作对象。 运算符重载实质是编写以运算符作为名称函数。不妨把这样函数称为运算符函数。...9 C++运算符重载注意事项以及汇总  在 C++ 中进行运算符重载时,有以下问题需要注意:  重载运算符含义应该符合原有用法习惯。

1.2K00

C++运算符重载(五)之关系运算符重载

关系运算符重载 作用:重载关系运算符,可以让两个自定义类型对象进行对比操作 示例: class Person { public: Person(string name, int age) {...这是因为运算符默认都是给内置类型用。...== 函数名:operator加上运算符 参数:有几个操作数就有几个参数,参数类型就是要操作对象类型 返回值:看运算符运算后返回值是什么 //存在this指针,要少传一个参数 bool operator..._day; } 公有函数无法访问私有变量,所以运算符重载要写在类内当作成员函数c 三、日期赋值= 参数类型 返回值 检测是否自己给自己赋值 返回 * this 一个类如果没有显式定义赋值运算符重载,...如果不写,会默认生成赋值重载,和拷贝构造行为类似,内置类型会完成值拷贝,自定义类型成员会调用他赋值重载 //赋值重载 Date operator=(const Date& d)//返回值类型是Date

68620
领券