一篇文章帶你了解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)文章
VC程序在Win32環(huán)境下動態(tài)鏈接庫(DLL)編程原理
這篇文章主要介紹了VC程序在Win32環(huán)境下動態(tài)鏈接庫(DLL)編程原理,包括了dll文件的原理與具體實現(xiàn)過程,對于深入掌握VC程序設(shè)計具有很好的參考借鑒價值,需要的朋友可以參考下2014-10-10
C++動態(tài)規(guī)劃算法實現(xiàn)矩陣鏈乘法
動態(tài)規(guī)劃算法通常用于求解具有某種最優(yōu)性質(zhì)的問題。在這類問題中,可能會有許多可行解。每一個解都對應(yīng)于一個值,我們希望找到具有最優(yōu)值的解2022-06-06
C++可調(diào)用對象callable object深入分析
所謂的callable object,表示可以被某種方式調(diào)用其某些函數(shù)的對象。它可以是:一個函數(shù)、一個指向成員函數(shù)的指針、一個函數(shù)對象,該對象擁有operator()、一個lambda表達式,嚴格的說它是一種函數(shù)對象2022-08-08
詳解c++中signal信號攜帶數(shù)據(jù)的接收與發(fā)送
這篇文章主要為大家詳細介紹了c++中signal信號攜帶數(shù)據(jù)的接收與發(fā)送的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-01-01

