重載運算符語法講解


重載運算符

這篇隨筆我來講解一下C++語言中重載運算符的相關知識。

一、重載運算符的用途

這是一個比較哲學的問題:我們為什么要重載運算符?

理由就是,我們C++語言中已經給出的運算符(包括算數運算符和邏輯運算符)只是針對C++語言中已經給定的數據類型進行運算,假如我們想要對我們的自定義數據類型進行運算的話,則需要重載運算符,我們可以把重載運算符理解成對已有的運算符的一種重新定義。

比如:

double a,b,c;
a=1/3;
b=1/2;
c=a+b;
printf("%lf",c);

這段程序輸出的肯定不是兩個分數相加的結果。
這時候我們就可以重載運算符+。

二、重載運算符的實現

語法格式如下(非常重要)

<返回類型> operator <運算符符號>(<參數>)
{
	<定義>;
}

這里我們舉一個例子。

在優先隊列(priority_queue)中,存儲的元素較大的會被放到堆頂。如果存的是int或者string等類型還好辦(因為他們本身就可以互相比較大小),如果是我們自定義的結構體類型,那就需要重載<運算符。

比如:

struct node
{
    int id;
    double x,y;
}//定義結構體
bool operator <(const node &a,const node &b)
{
    return a.x<b.x && a.y<b.y;
}//重載運算符“<”

注:這里的結構體保存了一個整型變量id,兩個長浮點變量x,y,表示坐標。

這里的重載運算符先比橫坐標后比縱坐標。

三、重載運算符的注意事項。

以下運算符不可重載:

關系運算符"."

成員指針運算符".*"

作用域運算符"::"

sizeof運算符

三目運算符"?:"

重載運算符限制在C++語言中已有的運算符范圍內的允許重載的運算符之中,不能創建新的運算符。

運算符重載實質上是函數重載。

好了,關於重載運算符的基本知識基本已經被科普完了,這是C++語言程序設計中非常非常常見的一種操作手段。請大家務必重視並用大量例題熟練掌握。

下課~祝同學們AK IOI!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM