`
gowithbutton
  • 浏览: 43473 次
社区版块
存档分类
最新评论

重载运算符之前++和后++

阅读更多

    <span style="font-family: Arial; font-size: 14px; line-height: 25px;"></span>

下面例子程序中 const Fraction operator ++(int) 中 <br>
int不过是个哑元(dummy),是永远用不上的 <br>
它只是用来判断++是prefix  还是  postfix <br>
记住,<span style="color: red;">如果有哑元,则是postfix,否则,就是prefix</span><br>
就像其他的一元算法和逻辑运算一样 <br>
而其实在C++中用到这种哑元的也只有在postfix  ++  和--了

例子:

int i=10;<br>
cout<<i++<<endl;<wbr><wbr><wbr>//i=11;后缀加;先返回后自增;<wbr><wbr>10<br>
cout&amp;lt;&amp;lt;++i&amp;lt;&amp;lt;endl;<wbr><wbr><wbr>//i=12;前缀加;先自增后返回;<wbr><wbr>12</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

例:

#include<iostream><br>
using namespace std;

class Fraction<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//数类;<br>
{<br><wbr>friend ostream&amp;amp; operator&amp;lt;&amp;lt;(ostream&amp;amp; out, const Fraction&amp;amp; x);<br>
private:<br><wbr>int den;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//加的步进距离,使自加的距离不是1;<br><wbr>int num;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//数(初值);<br>
public:<br><wbr>Fraction(int d=1, int n=0):den(d),num(n) {}<br><wbr>Fraction&amp;amp; operator++()<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//前缀自加重载;(前置版本prefix)<br><wbr><wbr>{<br><wbr><wbr><wbr>num+=den;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//先自增,再返回;<br><wbr><wbr><wbr>return *this;<br><wbr><wbr>}<br><wbr>const Fraction operator ++(int)<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//后缀自加重载;(后置版本postfix)<br><wbr><wbr>{<br><wbr><wbr><wbr>Fraction old (*this);<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//拷贝构造(对象参数是对象)。先返回,再自增;<br><wbr><wbr><wbr>++(*this);<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>//调用的是重载的前置版本;<br><wbr><wbr><wbr>return old;<br></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>
 
0
0
分享到:
评论

相关推荐

    c++重载增量运算符

    成员形式重载是指在类的成员函数中重载运算符,而非成员形式重载是指在类的友元函数中重载运算符。例如,在`ch18_5.cpp`中,我们定义了非成员形式的前增量和后增量运算符: ```cpp friend Increase & operator ++...

    c++运算符重载例子

    2. **掌握类运算符和友元运算符重载的定义和使用**:明确在什么情况下应该选择哪种方式进行运算符重载。 3. **掌握常用运算符的重载**:熟悉常用的运算符如`==`、`&gt;`、`等的重载方法。 #### 实验要求 - 对关系...

    浅度解析C++运算符重载

    此外,重载运算符不应过于复杂,避免引入不必要的副作用和难以理解的行为。保持运算符的语义清晰,是编写高质量C++代码的关键。 总结,C++的运算符重载是一个强大的工具,但同时也需要谨慎使用。理解何时以及如何...

    运算符重载和自定义类型变换PPT学习教案.pptx

    运算符重载是通过在类中定义特定的方法来实现的,这些方法的名称通常以`operator`开头,并且参数列表和返回类型要符合所重载运算符的要求。 例如,对于加法运算符`+`,`Complex`类可以包含如下重载方法: ```...

    详解C++ 重载运算符和重载函数

    重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数...

    C++ 中重载和运算符重载加号实现矩阵相加实例代码

    `t4`的值被设置为`t2 + t3`,这里利用了我们之前重载的`+`运算符。最后,`display()`函数被用来显示结果矩阵`t4`。 在实际应用中,矩阵相加可能会涉及更复杂的操作,例如检查矩阵维度是否匹配,处理不同尺寸的矩阵...

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

    C++ 重载运算符和重载函数 C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数...

    cpp代码-前置++,--,和后置++,--运算符重载

    前置`++`和`--`运算符返回操作数的新值,而操作数的值在表达式求值之前就已经更新。例如,`++x`会先将`x`的值加1,然后返回新值。后置`++`和`--`则返回操作数的旧值,而操作数的值在表达式求值之后才更新。例如,`y ...

    递增运算符重载.zip

    理解递增运算符重载对于开发复杂数据结构和自定义类型的C++程序至关重要。它使得自定义类型的行为与内置类型保持一致,提高了代码的可读性和易用性。通过恰当的重载,我们可以使用户能够以自然的方式与我们的类进行...

    c 运算符重载总结.pdf

    - 重载运算符需谨慎,确保其行为符合预期,避免引起混淆或错误。 - 需要注意的是,某些运算符(如`new`、`delete`)的重载可能涉及复杂性,需要对内存管理有深入理解。 通过上述各种运算符的重载,C++能够提供...

    运算符重载作业题.docx

    第二个任务要求我们进一步扩展`Complex`类的功能,包括加法、减法、乘法和除法运算符的重载,并且这些运算符重载函数应该作为`Complex`类的成员函数。 ##### 1. 更新复数类定义 在之前的类定义基础上,添加相应的...

    详解C++编程中的单目运算符重载与双目运算符重载

    在C++编程中,运算符重载是一种强大的特性,...在设计和实现类时,正确地重载运算符可以使类的行为更加符合预期,同时也使得类的使用者可以更自然地进行操作。理解并熟练掌握运算符重载是成为C++程序员的关键技能之一。

    解析C++中不能重载为友元函数的四个运算符

    现在先说说赋值运算符“=”的重载C++规定赋值运算符“=”只能重载为类的非静态成员函数,而不可以重载为类的友元函数。不能重载为类的静态成员应该比较容易理解,因为静态成员函数是属于整个类的,不是属于某个对象...

    实验7 多态:运算符重载1

    实验7的主题是多态性的...通过这个实验,你可以深入理解面向对象编程中多态性的应用,以及如何通过重载运算符增强代码的可读性和易用性。同时,也锻炼了你处理和比较对象的能力,这对于开发复杂的应用程序至关重要。

    C++实验四.docx

    在完成实验后,学生应能够熟练地在自定义类型中应用运算符重载,了解不同重载方式的影响,并能实现基本的类和运算符功能。此外,通过实验过程,还能锻炼编程技巧,提高问题解决能力,为后续的C++程序设计打下坚实...

    有理数四则运算.doc

    同时,也可以通过重载运算符,实现更加简洁和灵活的代码编写。 在实际应用中,有理数四则运算有广泛的应用,例如在数学计算、科学计算、金融计算等领域。因此,掌握有理数四则运算的实现方法和技术非常重要。

    c++ 运算符重载和方法重载

    字符串相关操作: strcpy(s1,s2)复制s2为s1; strcmp(s1,s2)比较s1和s2字符串内容是否相同 strcat(s1,s2)拼接字符串,把s2拼接在s1的末尾 strchr(s1,ch)找到s1这个字符...const修饰的取地址运算符重载 析构

    实验(1)插入运算符重载1

    1. 运算符重载:允许自定义类型像内置类型一样使用标准运算符,如`operator&gt;&gt;`和`operator。 2. 输入/输出流处理:使用`iostream`库来处理输入和输出,包括从标准输入读取数据和向标准输出写入数据。 3. 流操纵符:...

    第5章b__函数与运算符的重载PPT学习教案.pptx

    在C++编程语言中,函数和运算符的重载是两个关键的概念,它们极大地提高了代码的可读性和灵活性。在本章中,我们将深入探讨这两个主题。 首先,我们来看函数的使用。函数在编程中扮演着核心角色,它们将代码组织...

Global site tag (gtag.js) - Google Analytics