[C++]operator--重载

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jlran/article/details/52700120

#include <iostream>

//函数重载就是对一个已有的函数赋予新的含义,

//使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”


//操作符重载是C++的强大特性之一

//操作符重载的本质是通过函数扩展操作符的语义

//operator关键字是操作符重载的关键

//friend关键字可以对函数或类开发访问权限

//操作符重载遵循函数重载的规则

//操作符重载可以直接使用类的成员函数实现

//=, [], ()和->操作符只能通过成员函数进行重载

//++操作符通过一个int参数进行前置与后置的重载

//C++中不要重载&&和||操作符


class Test{

public:

Test(){

}

Test(int a, int b){

this->a = a;

this->b = b;

}

friend Test operator+(Test &t1, Test &t2);

Test operator-(Test &t1);

Test& operator++(); //前置++

Test& operator--(int); //后置--


void getAB(){

printf("a: %d b: %d\n", a, b);

}

private:

int a;

int b;

};


Test operator+(Test &t1, Test &t2){

return Test(t1.a+t2.a, t1.b+t2.b);

}


Test Test::operator-(Test &t1){

return Test(a-t1.a, b-t1.b);

}


//前置++操作符

Test& Test::operator++(){

return Test(++a, ++b);

}

//后置--

Test& Test::operator--(int){

return Test(a--, b--);

}


void playAdd(){

printf("playAdd\n");

Test t1(1, 2);

Test t2(3, 4);

Test t3;

t3 = t1 + t2;

t1.getAB();

t2.getAB();

t3.getAB();

}


void playMinus(){

printf("playMinus\n");

Test t1(1, 2);

Test t2(3, 4);

Test t3;

t3 = t1 - t2;

t1.getAB();

t2.getAB();

t3.getAB();

}


//通过一个占位参数来区分前置运算和后置运算 

void playPadd(){

printf("playPadd\n");

Test t1(1, 2);

++t1;

t1.getAB();

}

void playEminus(){


printf("playEminus\n");

Test t1(1, 2);

t1--;

t1.getAB();

}


int main()

{

playAdd();

playMinus();


playPadd();

playEminus();


getchar();

return 0;

}

猜你喜欢

转载自blog.csdn.net/jlran/article/details/52700120