C++ 中的this指针详解及实例

C++ 中的this指针详解及实例

什么是this指针?

在 C++ 中,this 指针是一个指向当前对象(成员函数所属的对象)的指针,它能够访问对象的成员变量和成员函数。

在 C++ 中,成员函数拥有一个隐含的参数this指针,该参数指向成员函数所属的对象。编译器会将成员函数的调用转成传递该隐含参数的形式。

如何使用this指针?

使用 this 指针可以访问当前对象的成员变量和成员函数,例如:

class Rectangle {
private:
    int width;
    int height;
public:
    void setWidth(int w) {
        this->width = w;
    }
    void setHeight(int h) {
        this->height = h;
    }
};

在上述代码中,setHeight函数中的 this 指针被用来引用成员变量 height,防止与参数 h 发生命名冲突。

示例说明1:在类的内部使用this指针

#include<iostream>
using std::cout;
using std::endl;

class Person {
private:
    char* name;
    int age;
public:
    Person(char* nm, int a) {
        this->name = nm;
        this->age = a;
    }
    void print() {
        cout << "My name is " << this->name << ", and I'm " << this->age << " years old." << endl;
    }
};

int main() {
    Person p("Peter", 20);
    p.print();
    return 0;
}

在上述代码中,我们定义了一个 Person 类,该类拥有两个成员变量 name 和 age,以及一个成员函数 print。在构造函数中通过 this 指针对成员变量进行初始化,在 print 函数中同样使用 this 指针引用成员变量。

示例说明2:在一个类的成员函数中返回当前对象的引用

#include<iostream>
using std::cout;
using std::endl;

class Rectangle {
private:
    int width;
    int height;
public:
    Rectangle(int w, int h) {
        this->width = w;
        this->height = h;
    }
    Rectangle& addWidth(int w) {
        this->width += w;
        return *this;
    }
    Rectangle& addHeight(int h) {
        this->height += h;
        return *this;
    }
    void print() {
        cout << "The Rectangle's width is " << this->width << ", and height is " << this->height << "." << endl;
    }
};

int main() {
    Rectangle rect(10, 20);
    rect.addWidth(5).addHeight(10).print();
    return 0;
}

在上述代码中,我们定义了一个 Rectangle 类,该类拥有两个成员变量 width 和 height,以及三个成员函数:构造函数、addWidth 函数和 addHeight 函数。在这两个函数中,使用 this 指针返回当前对象的引用,在 print 函数中使用 this 指针引用成员变量。

总结

在 C++ 中,this 指针是指向当前对象的指针,可以访问当前对象的成员变量和成员函数。通过使用 this 指针,可以使代码更有可读性,并且可以实现使用当前对象的成员函数返回当前对象的引用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 中的this指针详解及实例 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • C语言详细分析讲解多文件的程序设计

    关于C语言多文件程序设计的攻略,我们可以分为以下几个部分进行讲解。 1. 模块化设计思想 在C语言中,模块化设计思想非常重要。它可以帮助我们将程序分解成多个模块,每个模块负责独立的功能,从而提高程序的可读性、可维护性和可重用性。在多文件程序设计中,每个源文件都可以看作一个模块。模块之间可以通过函数和变量进行交互,以此实现程序的功能。 2. 源文件和头文件 在…

    C 2023年5月23日
    00
  • jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)

    为了实现滚动到页面底部自动加载图文列表效果,需要使用jQuery和ajax两个插件。下面是具体的实现步骤: 步骤一:提前准备好HTML结构 首先,需要将需要加载的内容放置在一个容器里,比如一个div,这个容器需要有一个id,比如id=”content”。 步骤二:编写jquery代码 通过jquery的scroll事件可以捕获到页面滚动事件。当用户滚动滚动条…

    C 2023年5月23日
    00
  • C++基础之this指针与另一种“多态”

    C++基础之this指针与另一种“多态” 1. this指针是什么? 在C++中,this指针有一个特殊的用途,它指向当前对象的指针。我们通常使用this指针来访问当前对象的成员变量和成员函数。 class Person { private: string name; public: Person(string name) { this->name =…

    C 2023年5月22日
    00
  • C语言基础使用IDE快速开发的方法

    当我们学习C语言的时候,我们需要一个充足的开发环境去快速的开发我们的代码,而IDE(Integrated Development Environment)即为一种能够提供编码功能、调试功能等等一系列开发过程中需要的整合化开发环境。在下面的步骤中,我将会给大家讲解如何在IDE环境下使用C语言进行快速开发。 步骤一:安装IDE 安装IDE环境是IDE使用的第一步…

    C 2023年5月22日
    00
  • win10专业版提示更新错误0xC1900101怎么办 0xC1900101错误提示大全

    win10专业版提示更新错误0xC1900101怎么办 如果你正在使用win10专业版并且在更新系统时遇到了错误0xC1900101,那么以下几个方案可能对你有帮助: 方案一:检查硬件兼容性 在开始进行更新之前,请先确认你的设备硬件是否符合win10系统的要求。你可以通过访问微软的设备兼容性中心来检查是否存在不兼容的硬件或软件。 如果你在更新之前没有进行检查…

    C 2023年5月23日
    00
  • C#创建线程带参数的方法

    C#创建线程带参数的方法,可以通过委托和Lambda表达式实现。以下是详细的攻略: 委托和Lambda表达式的简介 委托是C#中一个非常重要的概念,它是一种指向方法的指针,能够在需要的时候再调用这个方法。Lambda表达式是C#3.0引入的一项新特性,它是一种简化创建委托的语法。Lambda表达式实质是一个匿名函数,总是由多个参数,一个箭头符号和一个表达式组…

    C 2023年5月22日
    00
  • C/C++中for语句循环用法以及练习举例

    下面是对C/C++中for语句循环用法以及练习举例的详细讲解。 1. for循环语法 for循环是一种常用的循环结构,它的语法如下: for (初始化表达式; 循环条件; 更新表达式) { 循环体 } 其中,初始化表达式一般是用来初始化循环控制变量的,循环条件是一个判断式,根据该式的返回值判断是否进入循环,更新表达式则在每次迭代之后更新循环控制变量的值。循环…

    C 2023年5月22日
    00
  • Alibaba Fastjson之超好用的JOSN解析库

    首先需要明确的是,Fastjson是一款由阿里巴巴集团开发的JSON解析库,它由于其灵活、高效、易用等优势,已经成为Java开发领域中使用最广泛的JSON解析库之一。下面,我将结合示例说明,讲解如何使用Fastjson这款超好用的JSON解析库。 1. 引入Fastjson依赖 首先,在使用Fastjson之前,我们需要先将其引入到我们的项目中。我们可以通过…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部