温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

C++this指针怎么理解

发布时间:2022-01-04 00:35:21 来源:亿速云 阅读:93 作者:柒染 栏目:开发技术

C++this指针怎么理解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

还是Stock股票这个类,假设我们要实现一个方法,比较一下当前股票和传入的股票, 返回价格高的那个股票。在我们实现的时候,会遇到一点问题。

const Stock & Stock::topVal(const Stock &s) const {
    if (s.total_val > total_val) {
        return s;
    }else {
        return ????;
    }
}

这段代码当中有一些问题,我们一个一个来说。

首先说函数签名,前面都没有问题,问题出现在签名末尾的const。这是我们第一次在函数的末尾看到const,这个用法只能用在类或结构体的成员函数中,而不能用在普通函数里。

它表示这个函数不会修改任何成员变量的值,末尾加上const的函数称为常量成员函数。

常量函数有一些特殊的性质:

能被任何函数调用,只能调用常量函数
能被任何对象调用,但const对象只能调用const函数
性质不是非常复杂,但有些像是绕口令,需要从const常量的性质角度出发理解一下。

代码当中第二个问题就是一堆问号的地方,这里我们想要return当前对象,但是我们不知道如何表示。为了解决这个问题,C++当中创建了一个特殊的指针叫做this,它用来指向调用成员函数的对象,也就是当前对象。

所以有了this之后,这段代码可以写成:

const Stock & Stock::topVal(const Stock &s) const {
    if (s.total_val > total_val) {
        return s;
    }else {
        return *this
    }
}

另外,this指针也可以拿来访问当前对象当中的成员变量,比如我们想要访问当前的total_val,可以写成this->total_val,我们直接用total_val本质上是一样的,是编译器替我们做了优化。

看完上述内容,你们掌握C++this指针怎么理解的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI