本節書摘來自異步社群出版社《21天學通c++(第7版)》一書中的第12章,第12.7節,作者: 【美】siddhartha rao, 【德】nicolai m. josuttis,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
21天學通c++(第7版)
問:我編寫的類封裝了一個動态整型數組,請問我至少應該實作哪些函數和方法?
答:編寫這樣的類時,必須明确定義下述情形下的行為:通過指派直接複制對象或通過按值傳遞給函數間接複制對象。通常,應實作複制構造函數、複制指派運算符和析構函數。另外,如果想改善這個類在某些情況下的性能,還應實作移動構造函數和移動指派運算符。
問:假設有一個類對象object,而我希望支援文法cout << object;,請問需要實作哪個運算符?
答:您需要實作一個轉換運算符,讓類能被解讀為std::cout支援的類型。一種解決方案是,像程式清單12.2那樣定義運算符char* ()。
**問:自己編寫智能指針類時,至少需要實作哪些函數和運算符?
**
答:智能指針必須能夠像正常指針那樣使用,如psmartptr或psmartptr->func()。為此,需要實作運算符和->。要確定它足夠智能,還需合理地編寫析構函數,以自動釋放/歸還資源;另外,還需實作複制構造函數和複制指派運算符,以明确定義複制和指派的方式(也可将複制構造函數和複制指派運算符聲明為私有的,以禁止複制和指派)。
本文僅用于學習和交流目的,不代表異步社群觀點。非商業轉載請注明作譯者、出處,并保留本文的原始連結。