首先我們區分一下:
int nun = 0;和int *pointer = new int(0);
表面上看都是乙個整數0,但是實際上num是「獨佔」的,pointer不是,也就是如果我們讓int j = num,j就是乙個和num沒關係的數了,而如果我們讓int *i = pointer;就會不太一樣。i和pointer是一起變化的。如果我們執行了delete pointer,那麼i也指向空了
我們可以利用這個原理做乙個「計數器」來保護類的不同拷貝的指標。我們用m-num做計數器,在拷貝建構函式裡面自增,賦值運算子增加右面的物件的值,減少左面的物件的值。析構函式中減少。如果減為0就意味著沒有指標指向這個類的s資料了,就可以安全的釋放了。
class hasptx
m_num(new size_t(1)) {}
~hasptx()
hasptx(const hasptx& a) :
i(a.i),
s(a.s) {}
m_num(a.m_num)
hasptx& operator=(const hasptx& k)
s = k.s;
i = k.i;
m_num = k.m_num;
return *this;
}private:
int i;
string *s;
size_t* m_num;
};
計數器 智慧型計數器簡介
計數器主要是應用於電子科技領域,計數器是一種運用得比較多的時序邏輯電路。計數器可以對數字進行運算,它是一種沒有辦法顯示計算結果的顯示器。隨著電子科技的不斷發展,現在的計數器也實現了智慧型功能。智慧型計數器的出現幫助我們實現了很多高強度生產問題 複雜的技術問題,並且節約了生產成本和人力成本。智慧型計數...
c 跨平台計數器
main.cpp清單 include timemeasurement.h using namespace kagula include using namespace std title 跨平台計數器 author kagula date 2016 03 17 purpose 用來測試程式的時間效能...
C 程式設計練習 計數器
description 下面是乙個計數器類的定義,請完成該類的實現,並在 main 函式中演示該類 的應用。class counter 在main 函式裡初始化,讓計數器曾加n 鍵盤輸入 自減一,最後輸出計算器的結果。sample input 18 sample output 6 參考 includ...