控制代碼類是管理基類指標的類,「智慧型指標」的類其實就是控制代碼類。智慧型指標都有乙個對應的計數器,這個計數器可以在智慧型指標指向的物件中,在「c++中的智慧型指標」中就是這樣的;也可以在控制代碼類中。這兩種有一些區別。
當計數器在智慧型指標物件的內部時,我們需要在類的外層加一層包裝,之前用ptr類,但是為了用計數器,在類ptr外層包裝了u_ptr類。如下圖:
其實還可以計數器和指標物件的分離,把計數器放到控制代碼類中,在「c++中的智慧型指標」以看到,不用在每乙個控制代碼類中放乙個計數器,控制代碼類要共有乙個計數器;可以在控制代碼類使用乙個計數器指標,這個指標物件公共的物件。這樣做是模組化程式更高了,但是模組並沒有更複雜。另外還可以把計數器寫成類,計數器也「智慧型」。
//重新實現複製否造函式
hasptr(const
hasptr &orig):
ptr(orig.ptr),val(orig.val)
hasptr&operator=(const
hasptr& rhs);
//獲取成員變數的介面
int*get_ptr()
const
intget_int
const
//設定成員變數的介面
void
set_per(
int*p)
void
set_int(
inti)
intget_ptr_val()
const
intset_ptr_val(
intval)
const
//指標的值沒變,所以可以為const
private
:
ptr *ptr;
size_t
*ust;
}
計數器的分離,不用重寫u_prt類,而ptr指標還可以指向其基類物件。
但是當把hasptr作為類ptr的友元時,還是要改類ptr的**的(新增友元);如果智慧型指標指向其基類,也要在基類中新增友元,因為友元不能繼承。
Python Counter類(計數器)
counter 計數器 用於追蹤值的出現次數 counter類繼承dict類,所以它能使用dict類裡面的方法 建立乙個counter類 import collections obj collections.counter aabbccc print obj 輸出 counter elements ...
struts2 ognl中計數器的使用
struts2隨提供了迴圈控制標籤,使用起來也比較方便,但在具體的應用中,也有不方便之處,他沒有像struts1的標籤,提供了begin end等屬性,支援自增變數的迴圈。遇到這種問題怎麼解決?struts2提供了標籤,且提供了乙個bean類 org.apache.struts2.util.coun...
FPGA設計中計數器的使用技巧
計數器使用很常見也很實用。以下是幾個例子 1,簡單的cnt計數 verilog reg 31 0 cnt always posedge clk cnt cnt 1 這是乙個簡單的計數器,計數從0開始計數,計數範圍0 2 32 1.2,帶有方向的cnt計數 verilog reg 31 0 cnt 1...