Code前端首页关于Code前端联系我们

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

terry 2年前 (2023-10-01) 阅读数 98 #c++
文章标签 Mysql

一、静态成员函数

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 

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门