初步C++运算符重载学习笔记<3> 增量递减运算符重载

初步C++运算符重载学习笔记<1>
初探C++运算符重载学习笔记<2> 重载为友元函数
 
 

增量、减量运算符++(--)分别有两种形式:前自增++i(自减--i)。后自增i++(自减i--)

因此当我们重载该运算符时,要重载对应形式的运算符。

T & operator ++() // 前自增++i

T & operator ++(int) //后自增 i++

举例:

#include <iostream>
using namespace std;

class complex
{
    double re;
    double im;
public:
    complex(double _re,double _im):re(_re),im(_im){};
    void print(){cout<<re<<" "<<im<<endl;}
    friend complex operator+(const complex &a ,const complex &b);  //想想返回为什么不是complex &
    complex& operator++();
    complex& operator++(int);
};

complex operator+(const complex &a , const complex &b)
{
    return complex(a.re + b.re , a.im + b.im );
}

complex& complex::operator++()   //前自增 ++i
{
    re = re + 1;
    return *this;
}

complex& complex::operator++(int)  //后自增 i++ int仅仅是区分前后自增
{
    im = im + 1;
    return *this;
}

int main()
{
    complex a(1,2);
    complex b(3,4);
    complex c = a + b;
    complex d = a + b + c;
    c.print();
    d.print();

    (c++)++;
    c.print();
    ++(++d);
    d.print();
    return 0;
}

结果输出为:

c后自增两次 虚部由6到8

d前自增两次 实部从10到12

版权声明:本文博客原创文章,博客,未经同意,不得转载。

时间: 2024-10-12 18:41:49

初步C++运算符重载学习笔记&lt;3&gt; 增量递减运算符重载的相关文章

初探C++运算符重载学习笔记&lt;1&gt;

运算符重载 含义: 对抽象数据类型也能够直接使用C++提供的运算符 对已有的运算符赋予多重的含义 使同一运算符针对不同的数据类型产生不同的行为 目的: -->扩展C++运算符的适用范围,以用于类所表示的抽象数据类型 -->程序更简洁 -->代码可读性更好 例如complex_a和complex_b是两个复数对象,如果求和,希望能直接写成 complex_a + complex_b  这样的形式. 实质: 函数重载 返回值类型 operator 运算符(参数表) { .... } 在函数编

初探C++运算符重载学习笔记&amp;lt;2&amp;gt; 重载为友元函数

初探C++运算符重载学习笔记 在上面那篇博客中,写了将运算符重载为普通函数或类的成员函数这两种情况. 以下的两种情况发生.则我们须要将运算符重载为类的友元函数 <1>成员函数不能满足要求 <2>普通函数又不能訪问类的私有成员时 举例说明: class Complex{ double real, imag; public: Complex(double r, double i):real(r), imag(i){ }; Complex operator+(double r); };

初探C++运算符重载学习笔记&lt;3&gt; 增量减量运算符重载

初探C++运算符重载学习笔记<1> 初探C++运算符重载学习笔记<2> 重载为友元函数     增量.减量运算符++(--)分别有两种形式:前自增++i(自减--i),后自增i++(自减i--) 因此当我们重载该运算符时,要重载相应形式的运算符. T & operator ++() // 前自增++i T & operator ++(int) //后自增 i++ 举例: #include <iostream> using namespace std; c

JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)

1.3种原始表达式 1.直接量:    1.23    //数字直接量 “hello”    //字符串直接量 ... 2.保留字构成的原始表达式: true    //返回布尔值:真 false    //假 null    //返回一个值:空 3.变量: i    //返回变量i的值 sum    //返回sum的值 2.对象初始化表达式 var p={ x:2.3, y:-1.2 } //一个拥有两个属性成员的对象 对象直接量也可以嵌套: var rea={ upp:{ x:2, y:2

[Python学习笔记1]Python语言基础 数学运算符 字符串 列表

这个系列是我在学习Python语言的过程中记录的笔记,主要是一些知识点汇总,而非学习教程,可供有一定编程基础者参考.文中偏见和不足难以避免,仅供参考,欢迎批评指正. 本系列笔记主要参考文献是官网文档:http://docs.python.org/.在此向文档编辑者致谢.请勿将本文用于商业用途. 一.Python语言介绍 首先,Python是一种广泛应用的通用高级编程语言,具有较高的抽象层次,支持面向对象的编程方法.其具有高级的数据结构和许多方便的库文件,可以完成文件IO.系统调用.网络编程,甚至

C++重载学习笔记

在学习这部分的时候有的地方不懂,有些是摘自网页资料. 1.重载运算符有两种形式,即重载为类的成员函数和重载为类的友元函数. 2.成员函数可以只用一个参数,友元类要有两个参数,把所有操作数通过参数全部传递. 3.++i,--i,前增量是引用返回,没有参数是前置运算.后增量是值返回,后置参数中参数只是一个标识. 4.如果定义了一个对象Cuser user=(2)编译可以通过,那么为了构造函数的自动转换功能,可以在构造函数前使用explicit关键字.explicit只能出现在类内的构造函数声明处,只

PHP学习笔记二十六【类的重载】

<?php //重载: //函数名一样,通过函数的参数个数或者是参数类型不同,达到调用同一个函数名 Class A{ // public function test1(){ // echo "test1()"; // } // public function test1($name) // { // echo "hello world"; // } //PHP不支持以上的重载方式 public function test1(){ echo "调用te

java方法重载学习笔记

java中方法的重载 (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading是一个类中多态性的一种表现. (2) java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义. 调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性. (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同.无法以返回型别作为重

.Net基础篇_学习笔记_第三天_运算符

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 第三天_C_Sharp运算符 { //练习,变成实现几天是几周零几天? class Program { static void Main(string[] args) { int days = 46; int weeks = days / 7; i