您的位置:

C++静态成员函数与this指针

一、静态成员函数

C++中的静态成员函数是指在类内,由关键字static修饰的函数。它不属于任何一个对象,而是属于类本身,可以通过类名进行调用,也可以通过对象名进行调用。静态成员函数只能访问静态成员变量和静态成员函数,不能访问普通成员变量和普通成员函数。静态成员函数也不需要通过对象来调用,所以也不需要传递this指针。下面是一个静态成员函数的例子:

class MyClass {
private:
    static int m_num;
public:
    static void setNum(int num) {
        m_num = num;
    }
};

在这个例子中,setNum是一个静态成员函数,它可以通过MyClass::setNum()obj.setNum()来进行调用。

二、this指针

this指针是C++中的一个关键字,它指向当前对象的指针。在成员函数中使用this可以访问成员变量和成员函数,也可以用于返回对象本身,例如:

class MyClass {
private:
    int m_num;
public:
    MyClass(int num) {
        this->m_num = num;
    }
    int getNum() {
        return this->m_num;
    }
    MyClass& self() {
        return *this;
    }
};

在这个例子中,this->m_num表示访问成员变量m_numthis->self()表示返回当前对象本身,它返回一个引用。

三、静态成员函数与this指针

静态成员函数没有this指针,因为它不属于任何一个对象。但是,静态成员函数可以接受一个指向当前类的指针作为参数来访问非静态成员变量和成员函数。这个指针可以是当前类的一个对象的指针,也可以是当前类的类名。下面是一个例子:

class MyClass {
private:
    int m_num;
public:
    static void setNum(MyClass* obj, int num) {
        obj->m_num = num;
    }
    int getNum() {
        return this->m_num;
    }
};

// 调用静态成员函数setNum
MyClass obj(10);
MyClass::setNum(&obj, 20);
cout << obj.getNum(); // 输出:20

在这个例子中,setNum是一个静态成员函数,它接受一个指向MyClass类的指针作为参数,可以访问非静态成员变量m_num,然后改变其值。

四、总结

C++中的静态成员函数不属于任何一个对象,可以通过类名或对象名调用,不能访问非静态成员变量和成员函数。this指针指向当前对象,可以在成员函数中访问成员变量和成员函数,也可以用于返回对象本身。静态成员函数可以接受一个指向当前类的指针作为参数来访问非静态成员变量和成员函数。

C++静态成员函数与this指针

2023-05-13
实现C++中的静态成员

2023-05-13
c语言非静态,c#静态非静态

2023-01-05
C++静态成员函数:定义和用法

2023-05-13
C++静态成员:定义及使用

2023-05-13
C++ this指针:用于在成员函数中指向调用该函数的对象

C++中this指针是一个指向当前对象的指针。在成员函数中,可以使用this指针来访问调用该函数的对象的成员变量和成员函数。 一、定义和使用this指针 this指针是在成员函数内部定义的一个常量指针

2023-12-08
C++ this指针:用于在成员函数中指向调用该函数的对象

C++中this指针是一个指向当前对象的指针。在成员函数中,可以使用this指针来访问调用该函数的对象的成员变量和成员函数。 一、定义和使用this指针 this指针是在成员函数内部定义的一个常量指针

2023-12-08
基础c语言笔记,C语言笔记

2023-01-06
深入解析C++静态数据成员的使用方法

2023-05-13
一篇c语言笔记,c语言入门笔记

2022-12-02
c语言笔记讲解,c语言程序笔记

2022-11-23
c语言知识笔记,c语言最全笔记

2023-01-04
c到c语言笔记的简单介绍

2022-11-24
c到c语言笔记,cc在c语言

2022-11-27
静态成员变量在C++中的使用

2023-05-13
用于区分对象和类的隐式指针——this指向

2023-05-13
php生成全静态页面的方法,php生成静态html

2023-01-07
深入理解C++中的静态变量

2023-05-13
理解this指针,掌握this指针的使用方法

2023-05-13
C++中this指针的应用场景及实现原理

2023-05-13