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日

相关文章

  • 一篇文章搞懂Python的类与对象名称空间

    为了更好地理解 Python 的类与对象名称空间,以下是具体的攻略。 什么是 Python 类和对象? Python 是一种面向对象的语言,类是其面向对象编程的基础。类是一种由数据属性和方法构成的对象。对象是类的实例化,可以具有自己的属性和方法。 Python类名称空间 Python 类名称空间是一个存储类变量和方法的字典。每个对象都有自己的名称空间,用于存…

    C 2023年5月22日
    00
  • awk命令、awk编程语言详细介绍和实例

    AWK命令、AWK编程语言详细介绍和实例 什么是AWK? AWK 是一种处理文本文件的工具,它的名字是由其创始人 Alfred Aho、Peter Weinberger 和 Brian Kernighan 的首字母组成的。 AWK 可以将数据分成记录和字段,是一种灵活、功能强大的文本分析工具。它最初是为 LINUX 操作系统设计的,现在已经移植到许多其他操作…

    C 2023年5月22日
    00
  • CMake的简单应用

    请允许我来讲解“CMake的简单应用”的完整攻略。 什么是 CMake CMake 是一个跨平台的编译构建工具,它可以用来自动生成 Makefile、Visual Studio 的项目、XCode 的工程等等编译构建相关的文件。 它可以帮助我们更方便地管理和构建跨平台的项目,提高开发效率和代码可维护性。下面我们将介绍如何使用 CMake 来构建项目。 CMa…

    C 2023年5月23日
    00
  • C语言如何利用异或进行两个值的交换详解

    可以使用异或运算符(^)来交换两个变量的值,其原理是利用异或运算符具有自反性和对称性的特点。 具体来说,设有两个变量 a 和 b,其初始值分别为 A 和 B,则交换过程可以如下描述: 1.将 a 与 b 进行异或运算,即 a = a ^ b; 2.将 b 与 a 进行异或运算,即 b = b ^ a; 3.将 a 与 b 进行异或运算,即 a = a ^ b…

    C 2023年5月23日
    00
  • 详解设计模式中的Command命令模式及相关C++实现

    详解设计模式中的Command命令模式及相关C++实现 什么是Command模式? Command模式是一种行为型设计模式,它将请求封装成一个对象,从而使您可以使用不同的请求、队列或日志请求参数化客户端对象。该模式还支持撤销操作。 Command模式的角色 Command模式涉及以下四个角色: Receiver: 程序执行实际操作的对象(比如照明系统、音响设…

    C 2023年5月22日
    00
  • win10开机蓝屏代码0xc000001怎么办 错误代码0xc000001的解决教程

    Win10开机蓝屏代码0xc000001怎么办 错误代码0xc000001的解决教程 在Windows 10系统使用电脑时,经常会遇到蓝屏问题,如果蓝屏提示代码为0xc000001,可能是由于系统文件损坏或系统启动设置不正确引起,下面是解决方法: 方法1:使用Windows Startup Repair Windows Startup Repair是Wind…

    C 2023年5月23日
    00
  • C++隐式转换问题分析及解决办法

    C++隐式转换问题分析及解决办法 背景 C++是一门强类型语言,变量必须先定义类型才能使用,这样可以提高代码的可靠性和执行效率。但在一些情况下,C++的强类型编程方式反而降低了编码的便利性和灵活性。因此,C++提供了隐式类型转换(implicit type conversion)机制,可以方便地将一种类型的变量转换成另一种类型的变量,这也是C++语言的特性之…

    C 2023年5月23日
    00
  • C++ 中私有继承的作用

    C++ 中的私有继承是一种继承方式,它可以让派生类的对象获得基类的成员,但是这些成员只能在派生类内部访问,从而实现了封装。私有继承的作用有以下几点: 实现代码复用 私有继承可以实现代码的复用。比如有一个基类 Person,其中定义了一些通用的成员变量和函数,而派生类 Teacher 和 Student 都需要使用这些成员。此时可以通过私有继承来避免代码重复。…

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