很抱歉转到这里提出这样一个基本问题,但是有人可以快点为我解决这个问题吗?然后我将删除该线程,以免导致noob混乱。
在以下来自C ++ Primer Plus文本的示例中,不是&函数声明中的运算符指定该函数返回一个指向Stock对象的指针?那么为什么函数继续按值返回s和this对象呢?
“...你想要返回的是不是这个,因为这是对象的地址。你想要返回对象本身,并用* this表示。(回想一下应用解除引用operator *到指针会产生指针指向的值。)现在,您可以使用* this作为调用对象的别名来完成方法定义。“
const Stock & Stock::topval(const Stock & s) const {
if (s.total_val > total_val)
return s; // argument object
else
return *this; // invoking object
}
答案 0 :(得分:1)
是的,那令人困惑。 C ++大量重载每个符号,因为键盘上没有足够的符号。
&符号&
用于两个不同的含义,它们在概念上相似,但实际上是完全不同的语言特征。
含义1: 参考类型声明。在&A上添加一个&符号,表示a-reference-to-type-A。例如:
Stock x;
Stock& s = x; // now s is a reference to x
含义2: 运营商地址。一元运算符,返回指向其参数的指针。例如:
Stock x;
Stock* s = &x; // now s a pointer to x
提醒:引用和指针是完全相同的,除了它们具有不同的语法,并且引用永远不能为null,并且您不能引用引用。
不要删除此帖子,我们喜欢n00bs。我自己就是一个n00b。
答案 1 :(得分:0)
const Stock &
表示返回对象的const引用。指向对象的指针为const Stock *
。不要把两者混在一起!所以这个指针被取消引用并返回。