天天看點

《C++面向對象高效程式設計(第2版)》——4.9 分析

本節書摘來自異步社群出版社《c++面向對象高效程式設計(第2版)》一書中的第4章,第4.9節,作者: 【美】kayshav dattatri,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

c++面向對象高效程式設計(第2版)

tstring類對象内部用一個指針和一個_length資料成員表示。預設構造函數将_length和_str指針都設定為0。_length資料成員是擷取儲存在字元串中的字元數目的一種方法。無論何時修改tstring類對象中的字元數目,都會即時更新_length。

<code>tstring::tstring(const char* arg)</code>在配置設定記憶體後從arg中複制字元到字元串對象中,然後正确設定_length。

<code>tstring::tstring(char c)</code>用單個字元建立一個字元串對象。

<code>tstring::tstring(cost tstring&amp; arg)</code>是複制構造函數,它執行深複制。首先,為arg指定的字元配置設定記憶體,然後複制所有字元。

<code>tstring::operator=(const tstring&amp; arg)</code>是一個指派操作符,它進行了一些優化。如果this的_length大于arg的,那麼隻需進行複制操作。否則,将删除_str所指向的記憶體(無用單元收集),然後配置設定一段新記憶體,再複制字元。

<code>tstring:operator=(const char* s)</code>是另一個指派操作符,它允許客戶将字元數組賦給一個現有tstring類對象,自動進行記憶體管理。

<code>tstring::operator=(char chartoassign)</code>還是一個指派操作符,它允許客戶将單個字元賦給一個現有的tstring類對象,自動進行記憶體管理。

<code>tstring::size()</code>傳回字元串的大小(即儲存的字元數目)。

<code>tstring::operator+=(const tstring&amp; arg)</code>是一個級聯操作符。該操作将arg中的字元附在this中的字元後面。它為組合的字元串配置設定記憶體,然後複制字元。注意,不能修改arg。這個實作可以讓諸如a +=a這樣的表達式正常運作。

<code>operator+(const tstring&amp; first, const tstring&amp; second)</code>以非成員函數的方式實作了加法操作符,原因将在第8章的操作符重載中讨論。在本章的讨論中,它是否為成員函數并不重要。該操作符在實作中使用了operator+=。

其實,加法操作符也可以這樣寫:

繼續閱讀