C++this指针详情

 更新时间:2022年01月03日 11:03:33   作者:梁唐  
这篇文章主要介绍了C++this指针详情,在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。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指针详情的文章就介绍到这了,更多相关C++this指针内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • visual studio 2019编译c++17的方法

    visual studio 2019编译c++17的方法

    这篇文章主要介绍了visual studio 2019编译c++17的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • C语言 struct结构体超详细讲解

    C语言 struct结构体超详细讲解

    C语言中,结构体类型属于一种构造类型(其他的构造类型还有:数组类型,联合类型),下面这篇文章主要给大家介绍了关于C语言结构体(struct)的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • sigsetjmp的用法总结

    sigsetjmp的用法总结

    sigsetjmp()会保存目前堆栈环境,然后将目前的地址作一个记号,而在程序其他地方调用siglongjmp()时便会直接跳到这个记号位置,然后还原堆栈,继续程序的执行
    2013-09-09
  • C++ pair的用法案例详解

    C++ pair的用法案例详解

    这篇文章主要介绍了C++ pair的用法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • break的使用for循环嵌套示例

    break的使用for循环嵌套示例

    这篇文章主要介绍了break的使用for循环嵌套示例,需要的朋友可以参考下
    2014-02-02
  • C++中智能指针unique_ptr的实现详解

    C++中智能指针unique_ptr的实现详解

    智能指针本质上并不神秘,其实就是 RAII 资源管理功能的自然展现而已,这篇文章主要为大家详细介绍了如何实现 C++中智能指针的 unique_ptr,需要的可以了解下
    2024-01-01
  • C语言获取Shell返回结果的实现方法

    C语言获取Shell返回结果的实现方法

    下面小编就为大家带来一篇C语言获取Shell返回结果的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • C语言之陷阱与缺陷详解

    C语言之陷阱与缺陷详解

    本片文章是对C++中陷阱与缺陷进行了详细的分析介绍,小编觉得本片文章讲解的非常详细,需要的朋友参考下,希望能够给你带来帮助
    2021-09-09
  • 重构-C++实现矩阵的简单实例

    重构-C++实现矩阵的简单实例

    下面小编就为大家带来一篇重构-C++实现矩阵的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 详解C++中的const和constexpr

    详解C++中的const和constexpr

    这篇文章主要为大家介绍了C++中的const和constexpr ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12

最新评论