C ++ Primer Plus这个指针示例

时间:2011-10-24 00:29:13

标签: c++ pointers

很抱歉转到这里提出这样一个基本问题,但是有人可以快点为我解决这个问题吗?然后我将删除该线程,以免导致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
}

2 个答案:

答案 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 *。不要把两者混在一起!所以这个指针被取消引用并返回。