c++運算符重載基本常識詳解。本站提示廣大學習愛好者:(c++運算符重載基本常識詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是c++運算符重載基本常識詳解正文
現實上,許多C++運算符曾經被重載。eg:將*運算符用於地址,將獲得存儲在這個地址中的值,將他用於2個數字時,獲得的將是他們的乘積。C++依據操作數的數量和類型來決議采取哪一種操作。
C++許可將運算符重載擴大到用戶界說的類型。例如,許可應用+將兩個對象相加。編譯器將依據操作數的數量和類型決議應用加法界說。運算符重載可使代碼看起來更天然。例如,將2個數組相加是一種罕見的運算。平日,須要應用上面如許的for輪回來完成:
for (int i = 0; i < 20; i++)
evening[i] = sam[i] + janet[i]; // add element by element
但在C++中,可以界說一個表現數組的類,偏重載+運算符,因而便有如許的語句:
total = arr1+arr2;
一個盤算時光的例子
mytime.h
#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;
}
挪用
#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;
}
履行成果
重點講授
1.sum函數中將參數聲明為援用,可以進步運轉效力,節儉內存
2.sum函數中,前往值不克不及是援用。由於sum對象是部分變量,在函數停止時將被刪除,是以援用將指向一個不存在的對象。應用前往類型Time意味著在刪除sum之前結構他的拷貝,挪用函數將獲得他的拷貝。