函数返回值

类型:

  T f();按值返回T;

  T* f();返回T类对象的指针/地址;

  const T* f();返回指向const.T类对象的指针

  T &f();返回对T对象的引用;

  const T& f();返回对const T对象的引用;

Notes:

1.绝不能返回对局部变量的引用(或指向局部变量的指针)。一旦离开函数,局部变量将被销毁,但在此之后,引用(或指针)仍然存在,他依旧引用(或指向)某些已不存在的对象。

2.在函数中创建新对象,想把他的所有权转交给主调函数,则可以通过返回指针的方式实现(返回引用或值则无法转移所有权或者说很难实现)。

3.const char* getname() const;

只能读取返回的指针所指向的内容,且无法删除他。

char *getname() const;

返回非const指针,将抵消const函数的优点,编译器将监测出错误;

4.返回一个基本类型(char,int,long),那么按值返回和按引用或指针返回效率相同。但是按值返回更为安全。

5.在某些情况下(如operation+),无法返回引用,因为函数的结果未知(而且无法体现计算),正确的实现将要求按值返回。

原文地址:https://www.cnblogs.com/zhengzhe/p/6485808.html