5. 物件生命期管理系統//第乙個引數介面類,第二個引數具體類
template//介面指標模板
class sip
explicit
//從乙個已經存在(帶參構造)的具體類,對映到智慧型介面指標
sip(c * c):_c(c);
//無參構造,用於具體類 沒有建構函式的情況
explicit
sip(): ;
sip(sip& p);
sip& operator=(sip& p)
; i & operator*() const
i *operator->() const
i *get() const
return (_i);
} c *get2() const
return (_c);
} ~sip()
;private:
i * _i; //介面指標
c * _c;//具體類指標
};template//把乙個具體類的指標對映到乙個智慧型介面指標 sip
sipcast(c * c)
;inte***ce iunknown;
#define declare_iunknown() /
public: /
virtual int addref( void) /
; /
virtual int release( void) /
/
return 0; /
}; /
public: /
int count;
main.cpp
#include "stdafx.h"
#include "global_datastruct.h"
#include "sentencemanager.h"
using namespace std;
typedef sippisentencemanager
pisentencemanager a()
void b()
int _tmain(int argc, _tchar* argv)
輸出:ct:1copy construct
2copy construct
2ct:2do shmeying on csentencemanager
0012fcd4
ct:t2
ct:0
destoried
執行緒安全的物件生命期管理
1.當析構函式遇到多執行緒 在即將析構乙個物件時,別的執行緒是否正在執行該物件的成員函式?如何保證在執行成員函式期間,物件不在另乙個執行緒被析構?在呼叫某個成員函式之前,如何確保物件還活著?析構函式會不會執行到一半?1.1執行緒安全類 多個執行緒同時訪問,表現出正確的行為 無論作業系統如何排程這些執...
muduo 執行緒安全的物件生命期管理
六 系統地避免各種指標錯誤 七 shared ptr 技術與陷阱 八 小結 當乙個物件能被多個執行緒同時看到時,那麼物件的銷毀時機就會變得模糊不清,可能出現多種競態條件 race condition 解決這些race condition是 c 多執行緒程式設計面臨的基本問題。本文試圖以shared ...
執行緒安全的物件生命期管理(三)
c 裡可能出現的記憶體問題大致有這麼幾個方面 1 緩衝區溢位 2 空懸指標 野指標 3 重複釋放 4 記憶體洩漏 5 不配對的new delete 6 記憶體碎片 正確使用智慧型指標能很容易地解決前面5個問題。1 緩衝區溢位 用vector string或自己編寫buffer class來管理緩衝區...