• C++ this指针


    11.4 This指针

    需要定义一个成员函数,比较两个Stock变量中哪个的变量的total_val最大,并返回total_val最大的Stock对象

    11.4.1 显式访问对象和隐式访问对象

    const Stock & topval(const Stock & s) const;
    
    • 1

    括号中的const表明,该函数不会修改被显式地访问的对象;括号后的const表明,该函数不会修改被隐式地访问的对象。由于该函数返回了两个const对象之一的引用,因此返回类型也应为const引用。

    top = stock1.topval(stock2);
    top = stock2.topval(stock1);
    
    • 1
    • 2

    在这里插入图片描述

    11.4.2 this

    当在返回值时,有这样一个问题:如何称呼那个调用成员函数的对象?stock1.topval(stock2), s是stock2的别名,但是没有stock1的别名。

    针对上述问题:C++解决方案为:使用被称为this的特殊指针。this指针指向用来调用成员函数的对象。

    一般来说,所有的类方法都将this指针设置为调用它的对象的地址。确实,topval()中的total_val只不过是this->total_val的缩写。

    在这里插入图片描述

    每个成员函数(包括构造函数和析构函数)都有一个this指针。this指针指向调用对象。如果方法需要引用整个调用对象,则可以使用表达式*this。在函数的括号后面使用const限定符将this限定为const,这样将不能使用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
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    Blackfly S USB3工业相机:缓冲区处理
    关于webWorker未解问题
    3.6 Redis缓存过期机制
    总结:Web3用户体验的四个层
    最新 IntelliJ IDEA 旗舰版和社区版下载安装教程(图解)
    35道最新【软件测试】面试题,常见面试题及答案汇总
    奔腾电力面试题
    数字化转型模块设计
    需要在html中加CSS,怎么加
    不知道10年老电脑如何重装系统?其实很简单
  • 原文地址:https://blog.csdn.net/weixin_44410704/article/details/127913832