c++ this 指针

作者: 檀香静雪 | 来源:发表于2020-07-12 18:13 被阅读0次

概念

this指针是c++程序中的一个关键字,this指向当前对象,通过this指针可以访问当前对象的所有成员。

this 只能用在类的内部,通过 this 可以访问类的所有成员,包括 privateprotectedpublic 属性的成员。

所谓的当前对象指的是当前所使用的对象,下面我们通过一个例子来看this指针的作用。

例子

class Complex {
private:
    double real, imag;
public:
    Complex(double real, double imag) {
        this->real = real;
        this->imag = imag;
    }
};

在上面的复数类中,我们有一个构造函数,其作用是给realimag赋值。其参数表中的参数名与成员变量名一致,在赋值时我们就会写成real = real;以及imag = imag,这样我们看不出到底是谁给谁赋值。

这时我们就可以用到this指针,将上面的式子写成this->real = real;,这样,就不难看出是用形参表的real给成员变量real赋值。

需要注意的是,this 是一个指针,要用->来访问成员变量或成员函数。

验证this指针

我们修改上面的代码如下:

class Complex {
private:
    double real, imag;
public:
    Complex(double r, double i) {
        this->real = r;//等价于real = r
        this->imag = i;//等价于imag = i
        printf("this:%p\n", this);
    }
};
int main() {
    Complex c1(2, 3);
    printf("c1:%p\n", &c1);
    Complex c2(5, 6);
    printf("c2:%p\n", &c2);
    return 0;
}

在构造函数中,我们使用printf函数输出this指针的值,同时,在main函数里,我们打印出c1以及c2的值。

运行上面的程序,可以得到如下所示结果:

this:00000037490FF8A0
c1:00000037490FF8A0
this:00000037490FF8B0
c2:00000037490FF8B0

我们可以看到,构造c1时所用到的this指针地址与直接输出的c1的地址相同,都是00000037490FF8A0,对于c2也是同理。

我们可以得出结论,this指针指向的就是当前所使用的对象。

相关文章

  • C++知识点

    C++基本方法: C++ memcpy C++基本特性: C++引用(vs指针) C++指针 C++封装: 将...

  • C++ 指针常量、常量指针和常指针常量

    参考:C++ 指针常量、常量指针和常指针常量

  • Java基础

    Java和C++的区别?a. Java没有指针。c++可以通过指针直接操作内存,但这个动作是危险的,指针引起的操作...

  • Jna send pointer pointer to c++

    目的: 有这样一个需求,java通过jna传递指针数组给c++,或者指针的指针 解决方案: c++ : 声明 vo...

  • C++ 指向类的指针

    原文地址:C++ 指向类的指针 一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • C++函数指针和Swift的函数对象

    C++函数指针和Swift的函数对象 在C++中学习函数指针式非常痛苦的事情,而在Swift里面学习函数指针则是非...

  • [C++之旅] 16 对象指针/对象成员指针/this指针

    [C++之旅] 16 对象指针/对象成员指针/this指针 一、对象指针 对象指针指向堆中地址 对象指针指向栈中地...

  • C++ 、java 和 C# 的区别

    一、基础类型 c++: ** java:** C#: 二、指针 1.java 是没有指针这个概念,c++ 和 c#...

  • 静心学习之路(7)——C++干架用知识

    善用书籍后自带的单词索引 指针、引用、数组、内存。《C++ Primer 5th》2.3.2——指针《C++ Pr...

网友评论

    本文标题:c++ this 指针

    本文链接:https://www.haomeiwen.com/subject/ajhncktx.html