c++入门+这个指针的例子

C++ Primer Plus this pointer example

本文关键字:指针 入门 c++      更新时间:2023-10-16

很抱歉在这里问这么一个基本的问题,但是有人能快速地为我澄清一下吗?然后我将删除线程,以免造成混乱。

在下面的c++ Primer Plus文本示例中,&操作符在函数声明指定该函数返回一个指针到股票对象?那么,为什么函数继续按值返回s和this对象呢?

"……然而,你想要返回的不是this,因为这是对象的地址。你想返回对象本身,用*this表示。(回想一下,对指针应用解引用操作符*将产生指针所指向的值。)现在可以通过使用*this作为调用对象的别名来完成方法定义。"

const Stock & Stock::topval(const Stock & s) const {
if (s.total_val > total_val)
   return s;           // argument object
else
   return *this;       // invoking object
}

是的,这很令人困惑。c++大量重载每个符号,因为键盘上没有足够的符号。

符号&用于表示两个不同的意思,它们在概念上是相似的,但实际上是完全不同的语言特征。

含义1: 引用类型声明。向类型A追加一个&符号,表示对类型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

提示:引用和指针是完全一样的东西,除了它们有不同的语法,引用永远不能为空,你不能有一个引用到一个引用。

不要删除这个帖子,我们喜欢书呆子。

const Stock &表示返回对对象的const引用。指向对象的指针是const Stock *。不要把两者混在一起!因此this指针被解引用并返回