1、一般采取三種方法
1)指針成員采取正常指針型行為。這樣的類具有指針的所有缺陷但無需特殊的複制控制。
2)類可以實作所謂的“智能指針”行為。指針所指向的對象是共享的,但類能夠防止懸垂指針。
3)類采取值型行為。指針所指向的對象是唯一的,由每個類對象獨立管理。
2、類中定義指針時,需要考慮的有:類的複制,類的指派,類的析構,共享對象,及懸垂指針。
3、定義智能指針
一個行為類似指針但也提供其他功能的類。智能指針的一個通用形式是接受指向動态配置設定對象的指針并負責删除該對象。使用者配置設定對象,但由智能指針類删除它。智能指針類需要實作複制控制成員來管理指向共享對象的指針。引用計數是實作智能指針的常用方法。
注意:是由構造函數設定共享對象的狀态并将使用計數置為1。
1)引入使用計數
定義智能指針的通用技術是采用一個使用計數(use count,也稱為引用計數,reference count)。智能指針類将一個計數器與類中成員指向的對象相關聯。使用計數為0時,删除對象。
對一個對象進行指派時,指派操作符減少左操作數對象的使用計數的值(如果使用計數減至0,則删除對象),并增加右操作數對象的使用計數的值。
2)實作使用計數有兩種政策。這裡引入一種:定義一個單獨的具體類用以封裝使用計數和相關指針。
示例
4、定義值型類
與處理智能指針不同的是,給指針成員提供值語義。具有值語義的類所定義的對象,其行為很像算術類型的對象:複制值型對象時,會得到一個不同的新副本。當發生複制時,改變的是指針所指向的值,而不是指針。
參考