📜  C++中“ this”指针的类型(1)

📅  最后修改于: 2023-12-03 15:14:01.882000             🧑  作者: Mango

C++中的this指针

在C++中,this是一个指向当前对象的指针,它是一个隐式参数,能够让对象在成员函数内部访问自身的成员变量和成员函数。在类的非静态成员函数中,可以使用this指针来引用当前实例对象。

this指针的类型

this指针的类型是指向当前对象的非常量指针,它的具体类型取决于所在类的类型。在成员函数内部,可以使用this指针来访问当前对象的成员。

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

int main() {
    MyClass obj;
    obj.printAddress(); // 输出:Address of the object: 0x7fff56546abc
    return 0;
}

在上面的示例中,printAddress()函数使用this指针来打印当前对象的地址。请注意,this指针的类型是MyClass*,指向MyClass类的对象。

使用this指针

在成员函数内,可以使用this指针来访问当前对象的成员变量和成员函数,以区分局部变量和参数名与成员变量同名的情况。

class MyClass {
private:
    int num;
public:
    void setNum(int num) {
        this->num = num; // 使用this指针
    }

    int getNum() {
        return this->num; // 使用this指针
    }
};

在上述示例中,setNum()函数使用this指针来访问成员变量num,以区分传入参数num与成员变量同名的情况。

this指针的限制
  • this指针只能在成员函数内使用,而且只能在非静态成员函数中使用。静态成员函数没有隐式的this指针。
  • this指针不能被显式地赋值。
  • this指针不能被删除。
总结

this指针是一个指向当前对象的指针,它的类型取决于所在类的类型。在成员函数内部,可以使用this指针来访问当前对象的成员变量和成员函数,以区分同名的局部变量和参数。请记住,this指针只能在非静态成员函数中使用。