源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c++运算符重载基础知识详解

  • 时间:2020-10-17 16:26 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c++运算符重载基础知识详解
实际上,很多C++运算符已经被重载。eg:将*运算符用于地址,将得到存储在这个地址中的值,将他用于2个数字时,得到的将是他们的乘积。C++根据操作数的数目和类型来决定采用哪种操作。 C++允许将运算符重载扩展到用户定义的类型。例如,允许使用+将两个对象相加。编译器将根据操作数的数目和类型决定使用加法定义。运算符重载可以使代码看起来更自然。例如,将2个数组相加是一种常见的运算。通常,需要使用下面这样的for循环来实现:
[u]复制代码[/u] 代码如下:
for (int i = 0; i < 20; i++) evening[i] = sam[i] + janet[i]; // add element by element
但在C++中,可以定义一个表示数组的类,并重载+运算符,于是便有这样的语句: total = arr1+arr2; 一个计算时间的例子 mytime.h
[u]复制代码[/u] 代码如下:
#include"stdafx.h" #include"MyTime.h" #include<iostream> int_tmain(intargc,_TCHAR*argv[]) { //比导入整个名称空间更经济 usingstd::cout; usingstd::endl; Timeplanning; Timecoding(2,50); Timefixing(5,55); Timetotal; cout<<"planningtime="; planning.Show(); cout<<endl; cout<<"codingtime="; coding.Show(); cout<<endl; cout<<"fixingtime="; fixing.Show(); cout<<endl; total=coding.Sum(fixing); cout<<"coding.Sum(fixing)="; total.Show(); cout<<endl; total=coding+fixing; cout<<"coding+fixing="; total.Show(); cout<<endl; getchar(); return0; }
调用
[u]复制代码[/u] 代码如下:
#include"stdafx.h" #include"MyTime.h" #include<iostream> int_tmain(intargc,_TCHAR*argv[]) { //比导入整个名称空间更经济 usingstd::cout; usingstd::endl; Timeplanning; Timecoding(2,50); Timefixing(5,55); Timetotal; cout<<"planningtime="; planning.Show(); cout<<endl; cout<<"codingtime="; coding.Show(); cout<<endl; cout<<"fixingtime="; fixing.Show(); cout<<endl; total=coding.Sum(fixing); cout<<"coding.Sum(fixing)="; total.Show(); cout<<endl; total=coding+fixing; cout<<"coding+fixing="; total.Show(); cout<<endl; getchar(); return0; }
执行结果 [img]http://files.jb51.net/file_images/article/201403/20140312161326.jpg?2014212161356[/img] 重点讲解 1.sum函数中将参数声明为引用,可以提高运行效率,节省内存 2.sum函数中,返回值不能是引用。因为sum对象是局部变量,在函数结束时将被删除,因此引用将指向一个不存在的对象。使用返回类型Time意味着在删除sum之前构造他的拷贝,调用函数将得到他的拷贝。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部