Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 私有析構函數 Android 代碼分析

私有析構函數 Android 代碼分析

編輯:關於Android編程

有人說聲明 Private Destructor, 這對象只能在 stack 上創建,不能在Heap上創建, 其實錯了, 這樣的程序編譯都過不了.   那為何會有 Private Destructor, 因為程序是這樣寫的   ------------------------------------ class Base { public:     Base(); protected:     virtual ~Base();     friend class Base_Friend; };   ------------------------------------ class Child : public Base{ public:     Child(); private:     virtual ~Child(); };   如此可以達到2個目的 1) 只能通過 delete base  才能調用 Child的Destructor 2) Child 不能再有 子類了     看看Android 的  Refbase 和 Overlay 的關系    class Overlay : public virtual RefBase { ... private:     virtual ~Overlay(); }   class RefBase {     public decStrong(); ... protected:                             RefBase();     virtual                ~RefBase();       }   注意到 ~RefBase(); 是 protected, 那個如何 delete RefBase 呢?  原來它提供 decStrong() 方法, 要刪除對象只有通過這個方法了 void RefBase::decStrong(const void* id) const {        ....        delete this;        .... }   RefBase 是提供給 wp<T> 和 sp<T> 使用的, 這種方法說明了RefBase不希望外部程序才進行對象new delete 管理   
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved