程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 代理模式 + Effective C++ 第一章筆記

代理模式 + Effective C++ 第一章筆記

編輯:C++入門知識

代理模式 + 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 析構函數。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved