使用op 復合形式 替代op 獨身形式 的優點

2021-08-05 19:26:04 字數 561 閱讀 8960

考慮下面的類:

class rational

這個例子的好處就是維護的時候更加方便,只要修改op=(復合形式)就可以了。

主要的優點有兩個:

1.可以提高效率,op= 不需要產生臨時物件,減少了臨時物件析構跟構造的開銷。op=直接返回的是前面已經構造好的物件。

2.可以為客戶提供兩種形式,客戶可以自行在效率與便利之間取捨。

下面再看乙個例子:

template

const t operator+(const t& lhs,const t& rhs)

template

const t operator+(const t& lhs,const t& rhs)

這兩個函式第乙個函式比較難以理解,c++會先呼叫拷貝建構函式構造乙個臨時物件,然後用臨時物件進行加法,第二個函式更加

易懂。但是,第乙個函式,編譯器可以進行返回值優化,第二個不行,這也就是說第一種可以提高效率。

而且,乙個匿名物件比實際物件更容易消除。

綜上:如果你設計程式庫,則你可以兩者兼有,若你是應用軟體開發者則應該使用復合形式的版本。

Windows下通過Cygwin使用OpenSSh

cygwin cygwin功能強大的令我驚嘆,它可將linux下的自由軟體移植到windows系統上來應用!二 為你的cygwin建乙個目錄,如d cygwin 三 點選setup.exe安裝 然後會列出linux種種可用的開源軟體,根據你的需要,選擇性地安裝。預設的都是skip即不安裝,在sear...

使用static const替代巨集

define str hqq 只是在預處理器裡進行文字替換,沒有型別,不做任何型別檢查,編譯器可以對相同的字串進行優化。只儲存乙份到 rodata 段。甚至有相同字尾的字串也可以優化,你可以用gcc 編譯測試,hello world 與 world 兩個字串,只儲存前面乙個。取的時候只需要給前面和中...

使用Thymeleaf替代jsp

這是一項可以使用純html替代jsp的方案,在spring中只需要配置三個bean以及編寫使用指定命名空間html檔案即可.對html檔案的修改並不能即時生效,必須在重啟專案對html檔案重新編譯後才會生效 配置 在webconfig下 生成三個bean bean 生成模板解析器 public it...