簡體   English   中英

一元減負荷:會員還是非會員?

[英]unary minus overload: member or non-member?

鑒於前綴一元運算符可以“ 由一個沒有參數的非靜態成員函數或一個參數的非成員函數實現 ”(§13.5.1[over.unary] / 1),除了通常之外還有區別嗎封裝/代碼重用設計原理適用於任何成員/非成員函數選擇?

對於二元運算符, 存在語義差異,因為非成員允許對其左側操作數進行隱式轉換。 對於一元運算符似乎沒有類似的東西,但標准將std::complex的一元否定運算符定義為非成員(第26.4.6節[complex.ops]),而std::valarray 's和std::duration的一元否定運算符是成員(§26.6.2.6[valarray.unary],§20.11.5.3[time.duration.arithmetic])。 有細微差別嗎?

據我所知,與決定非操作員功能是成員還是非成員相比,沒有區別。 顯然,在可能的情況下(如標准算法)更喜歡非成員,非朋友。

盡可能使用成員更有意義,因為你不必與朋友發瘋。 但除此之外,它只是一種代碼風格的決定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM