天天看點

《C++面向對象高效程式設計(第2版)》——3.15 函數傳回值

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

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

許多函數向主調函數傳回值、引用或指針。要正确和高效地使用它們,必須先了解它們的含義。可能有以下幾種模式傳回:

class tperson {

  public:

    // ...

    char* createnameofperson()const; // person類的成員

};<code>`</code>

假設,createnameofperson()用于為名稱中的字元配置設定記憶體,且傳回指向該字元的指針(由主調函數所擁有)。當不再需要它時,主調函數應釋放記憶體。隻有在指針傳回值時,才能轉移動态對象的所有權。若傳回引用或值則無法轉移所有權(至少很不容易)。如果不想傳回指針,可以将指針包含在對象中(像c++庫中的string類對象),然後按值傳回對象。另外,我們也可以使用某些回收程式對象(c++中的auto_prt),自動地删除從這種函數傳回的指針,将在下一章中将介紹。

(3)如果不允許主調函數修改傳回的指針所指向的字元(或者對象),則傳回指向const的指針。在tperson類中:

繼續閱讀