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

C++(this指针)

时间:2023-12-15 10:33:35浏览次数:32  
标签:函数 静态 成员 object C++ 指针

在 C++ 中,this 是一个关键字,表示指向当前对象的指针。它是每个非静态成员函数的一个隐式参数,被用于指向调用该函数的对象。通过 this 指针,成员函数可以访问调用它的对象的成员变量和成员函数。

以下是一个简单的示例,演示了 this 指针的使用:

#include <iostream>

class MyClass {
public:
    void printAddress() {
        std::cout << "Address of the object: " << this << std::endl;
    }

    void printValues(int x, int y) {
        // 使用 this 指针访问成员变量
        std::cout << "Values in the object: " << this->x << ", " << this->y << std::endl;

        // 访问传递进来的参数
        std::cout << "Values passed as arguments: " << x << ", " << y << std::endl;
    }

private:
    int x = 0;
    int y = 0;
};

int main() {
    MyClass obj1, obj2;

    // 调用成员函数,传递 this 指针
    obj1.printAddress();
    obj2.printAddress();

    // 调用成员函数,使用 this 指针访问成员变量
    obj1.printValues(1, 2);

    return 0;
}
Address of the object: 0x7ffeefb3d2e8
Address of the object: 0x7ffeefb3d2f0
Values in the object: 0, 0
Values passed as arguments: 1, 2

在这个例子中:

  • this 指针用于在成员函数 printAddress() 中打印对象的地址。
  • 在成员函数 printValues() 中,使用 this 指针访问对象的成员变量 xy,并且也展示了如何访问传递给函数的参数 xy

需要注意的是,this 指针只能在非静态成员函数中使用,因为静态成员函数是与类本身相关,而不是与类的具体实例相关。在静态成员函数中,this 指针是无效的。

class MyClass {
public:
    static void staticFunction() {
        // 在静态成员函数中,this 指针无效
        // 以下代码会导致编译错误
        // std::cout << "Address in static function: " << this << std::endl;
    }
};


标签:函数,静态,成员,object,C++,指针
From: https://www.cnblogs.com/keye/p/17902799.html

相关文章

  • 【C++】异常处理 ④ ( 异常接口声明 | 异常接口语法 | 抛出一种类型的异常 | 抛出多种
    文章目录一、异常接口声明1、异常接口引入2、异常接口语法3、抛出一种类型的异常4、抛出多种类型的异常5、抛出任何类型异常-不声明异常接口/声明throw(...)6、不能抛出任何类型异常-声明throw()7、抛出异常类型错误博客总结://1.不会抛出异常voidfun()throw();......
  • C++ Qt开发:ProgressBar进度条组件
    Qt是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍ProgressBar进度条组件的常用方法及灵活运用。ProgressBar(进度条)是在Qt中常用的用户界面组件之一......
  • C++(cmake-build-debug 和 cmake-build-release)
    cmake-build-debug和cmake-build-release是两个默认的构建目录名称,通常在使用CMake构建项目时生成。以下是它们的主要作用和区别:1.cmake-build-debug:这是一个用于调试构建的默认构建目录名称。在这个目录下,CMake会生成包含调试信息的可执行文件,以方便在调试器中进行调试......
  • 成员函数指针做回调参数总结 踩坑
    成员函数指针做回调参数总结踩坑一、程序升级后,在linux上编译提示错误:warning:convertingfrom‘int(MyClass::)()’to‘void()()’[-Wpmf-conversions]void(myStoredFunction)(void)=(GENERIC_FUNC_TYPE)memberFunc;//Compilerwarning二、出现这个情况是因为,程......
  • 算法战斗第三天C++2
    A.DominopilingYouaregivenarectangularboardofM × Nsquares.Alsoyouaregivenanunlimitednumberofstandarddominopiecesof2 × 1squares.Youareallowedtorotatethepieces.Youareaskedtoplaceasmanydominoesaspossibleonthe......
  • 算法Day2双指针法排序,滑动窗口,螺旋矩阵
    Day2双指针法排序,滑动窗口,螺旋矩阵ByHQWQF2023/12/14笔记977.有序数组的平方https://leetcode.cn/problems/squares-of-a-sorted-array/返回一个非递减顺序排序的整数数组每个元素的平方后组成的新数组,新数组也按非递减顺序排序。解法:双指针法由于给定数组本身是有序的,......
  • 算法战斗第三天C++1
    A.Bit++TheclassicprogramminglanguageofBitlandisBit++.Thislanguageissopeculiarandcomplicated.Thelanguageisthatpeculiarasithasexactlyonevariable,calledx.Also,therearetwooperations:Operation++increasesthevalueofv......
  • 【删除链表的倒数第N个节点】双指针
    leetcode19.删除链表的倒数第N个结点题解1:通过链表长度获取[倒数第n个节点]位置计算链表长度找到[倒数第N个节点]的前一个节点删除[倒数第N个节点]注意特殊情况:删除的是第一个节点时,直接返回第二个节点即可点击查看代码/***Definitionforsingly-linkedlist.......
  • C++(resize())
    在C++中,resize()是一种用于调整容器大小的成员函数,它通常用于std::vector、std::string等标准库容器。这个函数允许你改变容器中元素的数量,可以增加或减少容器的大小。对于std::vector:#include<vector>#include<iostream>intmain(){std::vector<int>myVector......
  • C++(clear())
    在C++中,clear()是用于清除流的状态和控制信息的成员函数,通常用于输入流(例如std::cin)和输出流(例如std::cout)。对于输入流:#include<iostream>intmain(){intnum;std::cin>>num;//检查输入流的状态if(std::cin.fail()){std::cerr<<......