天天看点

《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类中:

继续阅读