美文网首页简友广场想法C++学习笔记
第十一章 使用类(1)运算符重载及实例

第十一章 使用类(1)运算符重载及实例

作者: 阿厉a_li | 来源:发表于2020-01-04 19:28 被阅读0次

(一)运算符重载及实例

1.函数重载

    指函数名相同,但特征标不同(参数列表不同),也称为函数多态。运算符重载将函数重载的概念应用于运算符上,使得c++运算符有多种含义。运算符重载中,c++根据操作数的数目和类型决定采用何种操作

2.运算符函数

    要进行运算符重载,需要有一个被称为运算符函数的特殊函数形式。这种函数形式为:operator op(arguments);比如operator +();重载+运算符。这里注意一下,operator后面可以直接跟运算符,也可以有空格,没有影响(试验过)。

3.运算符重载剖析

    实际上就是用operator +取代原有的实现想要重载的功能的函数,这样,total=coding.operator+(fixing);就跟运算符的表示法total=coding+fixing;的作用是一模一样的。后一个式子实际就是调用coding的operator+函数,参数是fixing,即运算符左边是调用运算符函数的对象右边是作为运算符函数的参数的对象

4.运算符连续使用

    如果返回是同一个类的对象,则我们的运算符可以连续使用,这是我们所希望的,比如t4=t1+t2+t3;将被转换为t4=t1.operator+(t2+t3);进一步t4=t1.operator+(t2.operator+(t3));注意前提是运算符返回的是同一个类的对象,而参数恰好也是对象。

5.重载限制

(1)重载后的运算符至少有一个是用户自定义的类型。即如果全部是基本类型的话,是不可以重载运算符的,必须是有一个类或者结构,这将防止用户为标准类型重载运算符。

(2)使用运算符不能违反运算符原来的运算规则,比如+有两个操作数,重载后也要有两个操作数。再比如运算符的优先级不改变

(3)不能创建新的运算符。

(4)某些运算符不能重载,比如sizeof,.,::,等。C++不能重载的总共五个(还有其他关键字型的运算符,暂时不考虑): "."(类成员访问运算符);" .*"(类成员指针访问运算符); "::"(域运算符);"siezof"(长度运算符); " ?:"(条件运算符)

(5)有些运算符只能通过成员函数重载,不能通过友元重载。比如(),[],=,->。

相关文章

  • 第十一章 使用类(1)运算符重载及实例

    (一)运算符重载及实例 1.函数重载 指函数名相同,但特征标不同(参数列表不同),也称为函数多态。运算符重载将函...

  • python 运算符的重载

    什么是运算符重载: 让自定义的类生成的对象(实例)能够使用运算符进行操作 运算符重载的作用: 让自定义的实例像内建...

  • 运算符重载与友元函数

    运算符重载 C++允许将运算符重载到用户定义的类型,例如,使用+将两个类对象相加。 重载运算符要使用运算符函数: ...

  • python 运算符重载

    什么是运算符重载:让自定义的类生产的对象,能够使用运算符进行操作运算符实际上调用方法 作用:让自定义的类的实例对象...

  • 1.2.14_C++ 二元运算符重载

    C++ 重载运算符和重载函数 二元运算符需要两个参数,下面是二元运算符的实例。 我们平常使用的加运算符( + )、...

  • Python全栈之路系列之面向对象运算符重载

    运算符重载的概念如下: 运算符重载让类拦截常规的Python运算; 类可重载所有Python表达式运算符; 类也可...

  • C++ 部分运算符重载

    可重载的运算符 不可重载的运算符和符号 重载运算符为类的成员函数 重载运算符为友元函数 重载赋值运算符 重载流插入...

  • C++学习笔记二

    使用类 运算符重载 重载后的运算符必须至少有一个操作数是用户定义的类型 使用运算符时不能违反原来运算符的句法规则,...

  • C++派生类的友元函数,派生类的析构函数

    一、赋值兼容 运算符重载函数需要访问父类的私有成员,运算符重载函数是父类的友元函数,子类继承了父类,子类也可以使用...

  • 《C++Primer》第十九章

    第十九章 特殊工具与技术 控制内存分配 1. 重载new和delete 重载这两个运算符与重载其他运算符的过程大不...

网友评论

    本文标题:第十一章 使用类(1)运算符重载及实例

    本文链接:https://www.haomeiwen.com/subject/zxutnctx.html