首页 / C++ / C++:运算符重载函数
C++:运算符重载函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++:运算符重载函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2009字,纯文字阅读大概需要3分钟。
内容图文
5.运算符重载
5.1 在类外定义的运算符重载函数
C++为运算符重载提供了一种方法,即在运行运算符重载时,必须定义一个运算符重载函数,
其名字为operator,后随一个要重载的运算符。例如,要重载"+"号,应该写一个名字为operator
的函数,其他的运算符也是如此。
函数 功能
operator+ 加法
operator- 减法
operator* 乘法
operator< 小于
因此,若要两个对象相加,需要先定义一个运算符重载函数operator+,例如:
class Complex{ public : double real,imag; Complex( double r=0;doubble i=0) { real = r; imag = i; } }; Complex operator+(Complex om1,Complex om2) { Complex temp; temp.real = om1.real+om2.real; temp.imag = om1.imag+om2.imag; return temp; }
这样,就可以方便使用语句:
int main() { Complex com1( 1.1,2.2),com2(3.3,4.4),total; //total = com1+com2; //total = operator+(com1,com2);return0; } //上述两个注释语句是等价的,显然前者更简单明了。
//例5.1 两个Complex类对象相加的完整程序
#include<iostream> usingnamespace std; class Complex{ public: double real,imag; Complex(double r=0,double i=0) { real = r; imag = i; } }; Complex operator+(Complex om1,Complex om2) //定义运算符+的重载函数 { Complex temp; temp.real = om1.real+om2.real; temp.imag = om1.imag+om2.imag; return temp; } int main(int argc, char** agrv) { Complex com1(1.1,2.2),com2(3.3,4.4),total1,total2; total1 = com1+com2; //调用运算符重载函数operator的第一种方式 cout<<"total1.real="<<total1.real<<","<<"total1.imag="<<total1.imag<<endl; total2 = operator+(com1,com2); //调用运算符重载函数operator的第二种方式 cout<<"total2.real="<<total2.real<<","<<"total2.imag="<<total2.imag<<endl; return0; }
C++对运算符重载指定如下一些规则:
(1)不允许重载的运算符有:
.(成员访问运算符) .*(成员指针访问运算符) ::(作用域符) Sizeof(长度运算符) ?:(条件运算符)
(2)不允许用户定义新的运算符作为重载运算符
(3)重载的功能应当与原有的功能相类似(+就是实现加法,-就是实现减法)
(4)重载不能改变运算符的操作对象(即操作数)。例如,"+"就是一个双目运算符(即只能代两个操作数),重载后仍为双目运算符,需要两个参数。
(5)重载不能改变运算符原有的优先级。但是可以采用加"()"的办法进行强制转换。
(6)重载不能改变运算符原有的结合特性.例如,乘除法运算符都是从左往右结合的.必要时,可以采用加"()"的办法
(7)运算符重载函数的参数至少应有一个是类对象(或类对象的引用)。也就是说,运算符重载函数的参数不能全是C++的标准型(基本数据类型)。目的是:防止用户修改标准类型数据的运算符性质。
(8)运算符重载函数可以是普通函数,也可以是类的成员函数,还可以是类的友元函数。
(9)一般而言,用于类对象的运算符必须重载,但是赋值运算符"="除外,不必用户进行重载,系统已经为每一个新声明的类重载了一个赋值运算符函数,它的作是逐个复制类的数据成员,可以直接用于对象之间的赋值,用户不必自己编写运算符重载函数。
原文:http://www.cnblogs.com/XYQ-208910/p/4912482.html
内容总结
以上是互联网集市为您收集整理的C++:运算符重载函数全部内容,希望文章能够帮你解决C++:运算符重载函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。