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指针内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C语言 分析逆序字符串与字符串的逆序输出有什么区别

    C语言 分析逆序字符串与字符串的逆序输出有什么区别

    例如,给定一个字符串 s,将 s 中的字符顺序颠倒过来,如 s = “abcd”,逆序后变成 “dcba”。可以采用多种方法对字符串进行逆序,以下将对其中的方法和字符串的逆序输出的区别进行分析
    2022-04-04
  • C++ Boost Spirit进阶教程

    C++ Boost Spirit进阶教程

    Boost是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一,是为C++语言标准库提供扩展的一些C++程序库的总称
    2022-11-11
  • C语言删除输入字符串中的空格示例代码

    C语言删除输入字符串中的空格示例代码

    最近工作中遇到了需求,要删除字符串中的所有空格,就要筛选出空格字符,这篇文章主要给大家介绍了关于利用C语言删除输入字符串中的空格的相关资料,需要的朋友可以参考下
    2022-12-12
  • C基础 mariadb处理的简单实例

    C基础 mariadb处理的简单实例

    下面小编就为大家带来一篇C基础 mariadb处理的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 深入解读C++中的指针变量

    深入解读C++中的指针变量

    这篇文章主要介绍了深入解读C++中的指针变量,是C语言入门学习中的基础知识,需要的朋友可以参考下
    2015-09-09
  • c语言通过栈判断括号匹配是否配对

    c语言通过栈判断括号匹配是否配对

    前面实现了栈的基本数据结构,这里来做一个联系,用栈来解决一道比较常见的算法题,就是括号配对是否满足规则,文中有相关的代码示例供大家参考,需要的朋友可以参考下
    2023-09-09
  • Qt中parent()函数的具体使用

    Qt中parent()函数的具体使用

    你会发现几乎所有的Qt类的构造函数都会有一个parent参数,本文主要介绍了Qt中parent()函数的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • kernel劫持modprobe path内容详解

    kernel劫持modprobe path内容详解

    这篇文章主要为大家介绍了kernel劫持modprobe path的内容详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 详解C语言之函数

    详解C语言之函数

    本文是小结了一下C语言的函数语法,详细介绍了C语言函数语法的概述、函数的定义、函数的返回值、函数调用等7个方面的内容,非常详细,这里推荐给小伙伴们
    2021-11-11
  • 利用C语言实现2048小游戏的方法

    利用C语言实现2048小游戏的方法

    2048是比较流行的一款数字游戏,相信对大家来说都不陌生,这篇文章给大家分享了利用C语言实现2048小游戏的方法,对大家学习理解C语言具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。
    2016-10-10

最新评论