美文网首页
C++学习,第9课,运算符重载

C++学习,第9课,运算符重载

作者: Mr小熊_1da7 | 来源:发表于2019-06-10 00:01 被阅读0次

1 前言

"+"操作,一般只用于int,浮点之类数的相加。

那能不能用作类的相加呢!可以,要重载加法;

2 如何重载加法

Point operator+(Point &a, Point &b)

{

Point n;

n.x = a.x+b.x;

n.y = a.y+b.y;

return n;

}

* 这里重载operatoer+,即+;因为c++可以根据参数决定调用的方法,所以这里可以重新定义+;

该方法要加入为类的友元函数


int main(int argc, char **argv)

{

cout<<"*******************"<<endl;

Point p1(1, 2);

Point p2(2, 3);

cout<<"*******************"<<endl;

Point sum;

sum = p1+p2;

sum.printInfo();

return 0;

}


*意外发现

写法1

Point sum;

sum = p1+p2;

打印内容

*******************

Point(x,y)

Point(x,y)

*******************

Point()

Point()

~Point()

(3, 5)

~Point()

~Point()

~Point()

写法2 

Point sum = p1+p2;

*******************

Point(x,y)

Point(x,y)

*******************

Point()

(3, 5)

~Point()

~Point()

~Point()

明显方法2少创建一次类,更在快捷一些。

3 如何重载“p++”

/*这里是point++*/

Point operator++(Point &a,int b)

{

cout<<"p++"<<endl;

Point n;

n.x = a.x;

n.y = a.y;

a.x++;

a.y++;

return n;

}

4 如何重载“++p”

/*这里是++point*/

Point& operator++(Point &a)

{

cout<<"++p"<<endl;

a.x++;

a.y++;

return a;

}

5 如何重载“<<”

/*这里是<<*/

ostream& operator<<(ostream& cout, Point &a)

{

cout<<"("<<a.x<<", "<<a.y<<")";

return cout;

}

int main(int argc, char **argv)

{

cout<<"*******************"<<endl;

Point p1(1, 2);

cout<<"*******************"<<endl;

cout <<"Port = "<<p1<<endl;

return 0;

}

*稍微解释一下

一般用法,cout <<a<<"a"<<endl;

<<参数1:cout是已经定义过的变量。方法用的是引用;参数2为一般变量,这里有a,"a",endl。

cout <<a<<"a"<<endl;等价于

cout = cout<<a;

cout = cout<<"a";

cout =  cout<<endl;

6 一般使用

//p++,这样可以
Point  por=perator++(p1,0);

其他的就不举例了

相关文章

  • 第十一章 使用类

    运算符重载 运算符重载是一种形式的C++多态。运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。...

  • 1.2.15_C++ 关系运算符重载

    C++ 重载运算符和重载函数 C++ 语言支持各种关系运算符( < 、 > 、 <= 、 >= 、 == 等等),...

  • C++ 运算符重载

    运算符重载将重载的概念扩展到运算符上,允许赋予C++运算符多种含义。实际上,很多C++运算符已经重载。将*运算符用...

  • C++运算符重载

    C++运算符重载的实质:运算符重载的实质就是函数重载或函数多态。运算符重载是一种形式的C++多态。目的在于让人能够...

  • C++运算符重载-下篇 (Boolan)

    C++运算符重载-下篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++运算符重载-上篇 (Boolan)

    C++运算符重载-上篇 (Boolan) 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符...

  • C++ 重载运算符

    C++重载运算符

  • C++重载

    重载 C++语言规定: 重载的运算符要保持原运算符的意义。只能对已有的运算符重载,不能增加新的运算符。重载的运算符...

  • 2017 09 22

    Am:对运算符重载进行学习: 基础定义部分: 1.重载定义:根据自己的需要对C++已提供的运算符进行重载,赋予新的...

  • 1.2.17_C++ ++ 和 -- 运算符重载

    C++ 重载运算符和重载函数 递增运算符( ++ )和递减运算符( -- )是 C++ 语言中两个重要的一元运算符...

网友评论

      本文标题:C++学习,第9课,运算符重载

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