首页 > 编程语言 >C++ this 指针

C++ this 指针

时间:2023-06-08 09:34:57浏览次数:29  
标签:Box 变量 成员 C++ 函数 指针 name

第一部分

this 指针的类型可理解为 Box*。
此时得到两个地址分别为 box1 和 box2 对象的地址。

实例:
#include <iostream>
using namespace std;

class Box{
    public:
        Box(){;}
        ~Box(){;}
        Box* get_address()   //得到this的地址
        {
            return this;
        }
};

int main(){
    
    Box box1;
    Box box2;
    // Box* 定义指针p接受对象box的get_address()成员函数的返回值,并打印
    
    Box* p = box1.get_address();  
    cout << p << endl;
    
    p = box2.get_address();
    cout << p << endl; 

    return 0;
}

第二部分

在 C++ 中,成员变量和成员函数可以共用同名标识符,因此在类的成员函数中,如果需要访问成员变量,需要使用 this 指针来显式指定当前对象的成员变量。

举例来说,如果类中声明了一个名为 name 的成员变量,并且在成员函数中使用了与成员变量同名的形参,那么在函数中直接使用 name 将会引用函数的形参而不是成员变量。这时就需要使用 this 指针来指定当前对象的成员变量。例如:

class Person {
private:
    string name;
public:
    void setName(string name) {
        this->name = name; // 使用 this 指针显式指定成员变量
    }
};

在上述代码中,我们定义了一个名为 Person 的类,并在其中定义了一个成员变量 name。在成员函数 setName 中,我们使用了与成员变量同名的形参 name,在给成员变量赋值时使用了 this 指针来显式指定当前对象的成员变量,以避免形参与成员变量重名导致的错误。

当没有同名的形参时,也可以直接访问成员变量,使用 this->name 和直接使用 name 都可以。但是建议使用 this->name 来明确指明访问的是成员变量,增加代码的可读性和可维护性。

标签:Box,变量,成员,C++,函数,指针,name
From: https://www.cnblogs.com/share0956/p/17462904.html

相关文章

  • C++ 指向类的指针
    C++指向类的指针一个指向C++类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符->,就像访问指向结构的指针一样。与所有的指针一样,您必须在使用指针之前,对指针进行初始化。下面的实例有助于更好地理解指向类的指针的概念:#include<iostream>usin......
  • C++面试八股文:C和C++有哪些区别
    C++面试八股文:C和C++有哪些区别某日小二参加XXX科技公司的C++高级工程师开发岗位1面:面试官:请问C和C++的区别有哪些?小二:C++是C的超集。面试官:还有吗?小二:...面试官:面试结束,回去等消息吧。小二:淦。小二的答案对吗?实际上这句话是有问题的,严格的说,C语言和C++有很......
  • C++面试八股文:C++中,函数的参数应该传值还是传引用?
    某日二师兄参加XXX科技公司的C++工程师开发岗位第8面:面试官:C++中,函数的参数应该传值还是传引用?二师兄:要看参数的用途。如果是出参,必须传引用。如果是入参,主要考虑参数类型的大小,来决定传值还是传引用。面试官:为什么不使用指针?二师兄:传指针也称之为传引用(passbyrefereence)。......
  • 混合编程python与C++
    上个版本:只是用到ctypes进行传输,这次将python服务端更改为C++服务端,方便后续维护.本文实现功能:python传输图片给C++,C++接受图片后对图片进行处理,并将结果返回给python客户端,passimagefrompythontoC++C++服务端.h文件注意文中的model//.h#pragmaonce#in......
  • 浅谈: C++中*&的含义
    指针引用int*&A;该类型要从右往左读:变量A,是一个引用&;谁的引用呢?指针*的引用。为什么有些函数形参要用*&而不直接用*呢?......
  • C++哈希算法(一)
    哈希设计思想:试想如果我们对一个数组进行查询,这个数组里,每一个元素都是一个字符串。我们知道数组最快的检索办法是通过数组的下标进行检索,但是对于这种场景,我们无能为力,只能从头查到尾,从而查询出目标元素。如果我们要根据名字找到其中的任何一个元素,就需要遍历整个数组。最坏情......
  • 蓝桥杯十一届JavaA组-C++解题
    随便乱写,目前正确性未知C.本质上升序列#include<bits/stdc++.h>usingnamespacestd;boolaccess[4][4];intdfs(intidx,intx,inty){ if(x<0||y<0||x>=4||y>=4) return0; if(access[y][x]) return0; if(idx>=15) return1; intcount=0; access......
  • C++ 日期 & 时间
     C++标准库没有提供所谓的日期类型。C++继承了C语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在C++程序中引用<ctime>头文件。有四个与时间相关的类型:clock_t、time_t、size_t 和 tm。类型clock_t、size_t和time_t能够把系统时间......
  • C++ 引用 vs 指针
     引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。引用必须在创建时被初始化。指针可以在任何时间被初始化。https://www.lekaowan......
  • C++ 中创建引用
     试想变量名称是变量附属在内存位置中的标签,您可以把引用当成是变量附属在内存位置中的第二个标签。因此,您可以通过原始变量名称或引用来访问变量的内容。例如:inti=17;我们可以为i声明引用变量,如下所示:int&r=i;double&s=d;在这些声明中,&读作引用。因此,第一个......