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++获取IP地址、硬件信息等

    获取系统信息是很常见的需求,C++ 作为一门底层语言,自然是可以做到的。获取系统信息可以说需要获取的信息非常多,从最基础的 IP 地址、MAC 地址、操作系统版本等等,到更深层次的 CPU 类型、内存大小、文件系统结构等等。在这里,我们将分别来介绍如何获取 IP 地址和如何获取硬件信息。 获取 IP 地址 要获取 IP 地址,我们需要用到 Winsock2 …

    C 2023年5月23日
    00
  • Objective-C关键字@property使用原理探究

    Objective-C关键字@property使用原理探究 @property的作用 @property是Objective-C中的关键字,用于声明类的属性(property)。使用@property可以快速地生成访问该属性的getter和setter方法的实现代码。 例如,在一个类中声明一个属性name: @property (nonatomic, cop…

    C 2023年5月22日
    00
  • 使用批处理异地备份数据(winrar)

    下面我将详细讲解如何使用批处理异地备份数据(winrar)。 1. 准备工作 在使用批处理进行异地备份之前,需要先下载安装 WinRAR 软件,并确保已经设置好环境变量。同时需要确定好备份的目录和备份的目标路径。 2. 编写批处理脚本 我们可以使用 notepad 或者其他文本编辑器来编写批处理脚本。打开文本编辑器,输入如下代码: @echo off set…

    C 2023年5月22日
    00
  • python爬取之json、pickle与shelve库的深入讲解

    Python爬取之Json、Pickle与Shelve库的深入讲解 在Python爬虫中,经常需要将数据结构序列化以便于存储或传输。Python提供了几种序列化方法,包括Json、Pickle和Shelve。 Json Json是一个轻量级的数据交换格式,可以方便地在不同的编程语言之间进行数据交换。Python提供了Json模块,可以将Python对象序列化…

    C 2023年5月23日
    00
  • C++实现简易选课系统代码分享

    以下是关于“C++实现简易选课系统代码分享”的完整攻略。 1. 实现思路 选课系统需要维护学生信息和课程信息,同时需要记录每个学生选修的课程。因此,在设计程序时,需要建立以下几个类: 学生类 学生类用于存储学生的基本信息,例如学号、姓名、性别等,同时需要用一个vector容器来存储该学生所选的课程。 课程类 课程类用于存储课程的基本信息,例如课程编号、课程名…

    C 2023年5月23日
    00
  • C++中的运算符和表达式

    让我来给大家详细讲解一下C++中的运算符和表达式。 运算符 在编程中,我们需要使用各种运算符对数据进行各种操作,C++提供了以下几种运算符: 算术运算符 算术运算符用于基本的算术操作,如加减乘除和取模。具体如下: 运算符 描述 + 加法 – 减法 * 乘法 / 除法 % 取模(求余数) 示例代码如下: #include <iostream> in…

    C 2023年5月24日
    00
  • 一篇文章带你使用C语言编写内核

    一篇文章带你使用C语言编写内核 介绍 操作系统是计算机系统中最核心的软件之一,内核是操作系统的核心部分,负责管理计算机硬件、提供各种系统服务和应用程序所需的接口。在这里,我们将介绍如何使用C语言编写一个简单的内核。 准备 在开始编写内核之前,您需要准备以下工具: 编译器(例如gcc) 汇编器(例如nasm) 链接器(例如ld) 一个可以运行在虚拟机或实机上的…

    C 2023年5月23日
    00
  • OpenCV图像轮廓提取的实现

    OpenCV图像轮廓提取的实现 图像轮廓是一组表示图像形状的点的连续曲线。在图像处理中,轮廓提取是非常重要的步骤,可以用来识别图像中的目标物体,检测边缘和形状等。OpenCV是一种流行的图像处理库,它提供了功能强大的图像轮廓提取功能。以下是OpenCV图像轮廓提取的完整攻略。 步骤1:读取图像 首先,你需要导入OpenCV和numpy库,并使用imread函…

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