国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

c++運算符重載基礎知識詳解

2020-01-26 15:34:19
字體:
來源:轉載
供稿:網友

實際上,很多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之前構造他的拷貝,調用函數將得到他的拷貝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天津市| 大连市| 蕉岭县| 安福县| 灵川县| 凤山市| 南木林县| 株洲县| 汉川市| 阿勒泰市| 抚远县| 汤阴县| 望城县| 扎鲁特旗| 德惠市| 东莞市| 泰州市| 铁岭市| 广汉市| 靖边县| 湖州市| 安宁市| 建德市| 枣庄市| 达拉特旗| 屯门区| 葫芦岛市| 南宁市| 乐平市| 荥阳市| 瑞金市| 江西省| 新宾| 大余县| 咸丰县| 鹰潭市| 齐河县| 师宗县| 慈利县| 宜君县| 望奎县|