在 C++ 中,this 是一个指针而不是对象本身。这和 C# 等语言不同。在 C# 中,this 是对象本身的别名。
public class test { public test() { this.do(); //此处的 this 代表对象本身的别名。 } private void do() { //To do. } } |
而在 C++ 中,它是本身的指针。C++ 中由于类遵循了必须先定义再使用的原则,所以在一个类中无法返回一个类自身的类型,这是因为此时这个类还是一个不完全类型(类函数作为类的成员还没有定义完全)。
在一个const成员函数中只能返回 const 类名& 类型,否则,可以返回 类名& 类型。
有的时候,我们希望使用者调用的成员函数返回 const 类名& 类型,但是却在某些情况下必须返回非 const 类型,此时可以使用重载来实现:定义两个相同函数,分别返回 const 和非 const 引用,那么,通常情况下,编译器认为 const 为更好匹配,但如果必须修改返回的类型,会自动匹配非 const 类型。
我觉得你标题想说的内容是初学者感兴趣的,但是里面的内容居然涉及了 Overload, Reference 之类的东西……
有空我们交流一下吧。我在研究 C/C++ 的有关 Return 的东西,而且这些有的是 ISO/IEC 14882:2003 没有规范的,每个编译器都有不同的解释。
@Liuyue:如何交流?
鄙人 C++ 水平并不高,让您见笑了。