【C++】运算符重载
来源:互联网 发布:螺旋箍筋的算法 编辑:程序博客网 时间:2024/05/22 13:15
这是C++的特色,也是C++比较难的一个基本语法,但是,如果你把运算符重载看成一个特殊的类方法,且这个类方法的名称就是运算符,一切就变得简单了。
下面用一个简单的程序说明这个问题:
声明两个3x3二维矩阵a,b,其实就是Matrix类,里面就用私有的长度为9的一维数组存储数据。只是打印的时候,打成二维数组的样子
实现~a或者~b就能直接打印a与b,也就是~相当于把a,b打印出来,此乃单目运算符重载。
实现a+b,返回另一个相加之后的矩阵c。
也就是说做到如下图的效果:
代码如下:
看完代码,运算符重载的作用很显然了,如果要声明一个类打印方法,按照各大面向对象的编程语言,基本上都要为这个类开一个void xx()的打印方法,然后这个xx的打印方法,就把类的私有成员this->aa,this->bb通通打印出来,在主函数调用的话,要a.xx()这样调用才能调用。
把~重载之后,可以直接对Matrix这个类进行打印。相当于在Matrix这个类中,声明一个叫~的打印方法,把原来C/C++中位取反的运算符重载了。
之后对+的重载,主要是两个Matrix类中私用成员进行运算。相当于在Matrix这个类中声明一个类似addMatrix(Matrix &b)的方法,里面实现this->matrix[i]与b.matrix[i]的相加,之后在主函数Matrix c=a.addMatrix(b)的意思了。
最后值得注意的一点:运算符重载仅能用于类里的私有成员之间的运算,不能用于C语言的标准类型直接的运行。比如,我想把^重载成两个int之间的幂运算,是绝对不可以的。这是c语言的规则,不为什么。运算符重载一开始就是用于自定义类直接的运算。
阅读全文
0 0
- C++-运算符重载
- [C++]重载运算符
- C#:运算符重载
- c++-++运算符重载
- C++:重载运算符
- 运算符重载(C++)
- [c++]运算符重载
- 【C++】运算符重载
- C++--------------------------------------------运算符重载
- C#:运算符重载
- C++:运算符重载
- C++:运算符重载
- C#:运算符重载
- [C++]运算符重载
- 【c++】运算符重载
- C++:运算符重载
- C#:运算符重载
- C++:运算符重载
- 折半DFS+MAP
- 产生[a,b]以及[c,d]间的随机数
- gdb区分程序是debug还是release版
- Rightmost Digit(快速幂)
- 木棒
- 【C++】运算符重载
- Angular学习笔记(二)
- MYSQL报错2003以及10061错误原因排查
- jQuery Mobile入门学习(2)
- 【C++】文件的读取与写入
- Cosos Label 填坑
- poj 1011
- Flutter学习之旅(四)----Flutter开发语言Dart的基础语法
- hdu2202 最大三角形 凸包