类型:
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+),无法返回引用,因为函数的结果未知(而且无法体现计算),正确的实现将要求按值返回。