C 自我精講 基礎系列六 PIMPL模式

2022-07-08 20:03:13 字數 871 閱讀 9529

【c++自我精講】基礎系列六 pimpl模式

0 前言

很實用的一種基礎模式。

1 pimpl解釋

pimpl(private implementation 或 pointer to implementation)是通過乙個私有的成員指標,將指標所指向的類的內部實現資料進行隱藏。

2 pimpl優點

舉例:

//

x.hclassx;

#include classc;

pimpl做法:

class x; //

代替#include

class

c;

1)降低模組的耦合。因為隱藏了類的實現,被隱藏的類相當於原類不可見,對隱藏的類進行修改,不需要重新編譯原類。

2)降低編譯依賴,提高編譯速度。指標的大小為(32位)或8(64位),x發生變化,指標大小卻不會改變,檔案c.h也不需要重編譯。

3)介面與實現分離,提高介面的穩定性。

1、通過指標封裝,當定義「new c」或"c c1"時 ,編譯器生成的**中不會摻雜x的任何資訊。

2、當使用c時,使用的是c的介面(c介面裡面操作的類其實是pimpl成員指向的x物件),與x無關,x被通過指標封裝徹底的與實現分離。

//

c.cpp

c::c()pimpl(new

x())

c::~c()

void

c::fun()

//main

#include int

main()

C 自我精講 基礎系列四 static

變數的儲存型別 儲存型別按變數的生存期劃分,分動態儲存方式和靜態儲存方式。1 動態儲存方式的變數,生存期為變數所在的作用域。即程式執行到此變數時才為其分配儲存空間,作用域結束時,會自動收回為其分配的儲存空間。2 靜態儲存方式的變數,生存期為整個程式執行的過程。即程式開始時就為其分配儲存空間,程式結束...

C 自我精講 基礎系列三 過載

c 自我精講 基礎系列三 過載 0 前言 分二部分 函式過載,操作符過載。1 函式過載 函式過載 指在同一名字空間中,函式名稱相同,引數型別 順序或數量不同的一類函式,同一函式名的函式能完成不同功能。非函式過載,只是返回值不一樣 void fun int i int fun int i 非函式過載,...

C 自我精講 基礎系列五 隱式轉換和顯示轉換

c 自我精講 基礎系列五 隱式轉換和顯示轉換 1 c 的型別轉換分為兩種,一種為隱式轉換,另一種為顯式轉換。2 c 中應該盡量不要使用轉換,盡量使用顯式轉換來代替隱式轉換。定義 隱式轉換是系統跟據程式的需要而自動轉換的。1 c 型別 char,int,float,long,double等 的隱式轉換...