學習日記之代理模式和Effective C++

代理模式(Proxy):爲其他對象提供一種代理以控制這個對象的訪問。

應用:

(1);遠程代理,爲一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在於不同地址空間的事實

(2);虛擬代理,根據需要創建開銷大的對象。通過虛擬代理存放實例化需要很長時間的真是對象。

(3);安全代理,用來控制真是對象訪問時的權限。

(4);智能指針,當調用真實的對象時,代理處理另外一些事。


Effective C++:


1:確定對象被使用前已經被初始化

(1),爲內置類型進行手工初始化,因爲C++不保證初始化他們

(2),夠函數最好使用成員初始列(member initialization list),而不要在構造函數內使用賦值操作(assignment)。初始列列出的成員變量,期排列次序應該和他們在class中的生命次序相同。

(3),爲免除“跨編譯大暖初始化次序”問題,用local static 對象替換non-local static 對象(單例模式)


2:構造/析構/賦值運算


(1),編譯器可以案子爲class創建default構造函數、copy構造函數、copy assignment操作符,以及析構函數

(2),爲駁回編譯器自動提供的技能,可將相應的成員函數聲明爲private並且不予實現。使用像Uncopyable這樣的base class也是一種做法。

class Uncopyable {
protected:
    Uncopyable() {}
    ~Uncopyable() {}
private:
    Uncopyable(const Uncopyable&);
    Uncopyable& operate=(const Uncopyable&);
};

(3),polymorphic base classes 應該聲明一個virtual析構函數。如果class帶有任何virtual函數,它就應該擁有一個virtual析構函數

(4),Classes 的設計目的如果不是作爲base classes使用,或不是爲了具備多態性(polymorphically),就不應該聲明virtual 析構函數。



發佈了49 篇原創文章 · 獲贊 49 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章