Impl模式實現之注意內聯

2022-01-15 11:10:32 字數 712 閱讀 9939

最近學習muduo原始碼時,對於內聯函式有了更深刻的認知.

內聯(inline)在**執行方面具有優勢,但是有時使用不當,或者稍微不注意,就會造成編譯錯誤.

以下將通過impl實現說明一二:

標頭檔案:

1

#ifndef muduo_temp_h

2#define muduo_temp_h

34 #include 5

6class

temp7;

1617

18#endif

//muduo_temp_h

原始檔:

1 #include "

temp.h"2

3class

temp::impl4;

1011

temp::temp()

12 : impl_(new

impl())

1316

17 temp::~temp()

18

解釋:(1)建構函式在原始檔實現,比較容易理解,因為在標頭檔案中並未具體實現impl,無法通過new建立impl例項;

(2)儘管析構函式是空的,但是也必須放在原始檔中進行定義,否則編譯期隱式宣告的~temp() inline展開的時候無法尋找到impl()::~impl的宣告,會出現編譯報錯.

ps:如果您覺得我的文章對您有幫助,可以掃碼領取下紅包,謝謝!

實現模式之容器

1.list list裡面的元素是有序的,兩個常用實現類是arraylist與linkedlist。這兩個實現類的效能恰如映象,arraylist的訪問速度快,新增和刪除元素的速度慢 而linkedlist正好相反。2.set set總共有3種實現 hashset,linkedhashset和tre...

建立型模式之工廠模式實現

工廠方法模式同樣屬於類的建立型模式又被稱為多型工廠模式 工廠方法模式的意義是定義乙個建立產品物件的工廠介面,將實際建立工作推遲到子類當中。核心工廠類不再負責產品的建立,這樣核心類成為乙個抽象工廠角色,僅負責具體工廠子類必須實現的介面,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠...

行為型模式之模板模式實現

模板方法模式是行為型模式之一,它把具有特定步驟演算法中的某些必要的處理委讓給抽象方法,通過子類繼承對抽象方法的不同實現改變整個演算法的行為。模板模式一般應用在具有以下條件的應用中 具有統一的操作步驟或操作過程 具有不同的操作細節 存在多個具有統一操作步驟的應用場景,但某些具體的操作細節卻各不相同。總...