一篇文章帶你了解c++運算符重載
友元函數(shù)
一種全局函數(shù),可以在類里聲明,其他地方定義?;蛘咴陬惱锒x生命。
但是這個友元函數(shù),不是類的成員。用的時候直接用,但是可以接觸類的所有權(quán)限的變量。
對于,重載操作符來說,可以把一些重載體函數(shù)定義為友元函數(shù)。
具體來說,如果進行運算的這兩個類,是對等的,沒有修改任一個的值,那么,建議用友元。
如果,類似=,是賦值,對左邊的變量做修改了。那么這時候應(yīng)該重載為成員函數(shù)。
重載:復(fù)合賦值
Operator pairings
許多操作符是成對的,重載其中一個的時候,另一個相對應(yīng)的也應(yīng)該重載。
自增自減運算符的重載
對于a++和++a,這兩個運算符哪個在前,哪個后。函數(shù)是不一樣的
c++20,spaceship operator
就是只需要重載一個,其他的就都能重載了。
#include <compare> // return type deduced as std::strong_ordering friend auto operator<=>(point p1, point p2) = default; int x_; int y_; 1 #include <iostream> 2 3 class point { 4 public: 5 point(int x, int y) 6 : x_{x} 7 , y_{y} {} 8 9 // hidden friend - preferred 10 11 12 13 private: 14 15 16 }; 17 18 auto main() -> int { 19 auto const p2 = point{1, 2}; 20 auto const p1 = point{1, 2}; 21 std::cout << "p1 == p2 " << (p1 == p2) << '\n'; 22 std::cout << "p1 != p2 " << (p1 != p2) << '\n'; 23 std::cout << "p1 < p2 " << (p1 < p2) << '\n'; 24 std::cout << "p1 > p2 " << (p1 > p2) << '\n'; 25 std::cout << "p1 <= p2 " << (p1 <= p2) << '\n'; 26 std::cout << "p1 >= p2 " << (p1 >= p2) << '\n'; 27 }
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C語言數(shù)組按協(xié)議存儲與按協(xié)議解析數(shù)據(jù)的實現(xiàn)
今天小編就為大家分享一篇關(guān)于C語言數(shù)組按協(xié)議存儲與按協(xié)議解析數(shù)據(jù)的實現(xiàn),小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12淺析string 與char* char[]之間的轉(zhuǎn)換
與char*不同的是,string不一定以NULL('\0')結(jié)束。string長度可以根據(jù)length()得到,string可以根據(jù)下標訪問。所以,不能將string直接賦值給char*2013-10-10C++實現(xiàn)獲取系統(tǒng)時間的方法小結(jié)
這篇文章主要為大家詳細介紹了使用C++實現(xiàn)獲取系統(tǒng)時間的一些常用方法,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以了解下2024-03-03C/C++ 中怎樣使用SetConsoleTextAttribute()函數(shù)來控制輸出字符的顏色
這篇文章主要介紹了C/C++ 中如何使用SetConsoleTextAttribute()函數(shù)來控制輸出字符的顏色,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03