21xrx.com
2024-06-03 04:23:04 Monday
登录
文章检索 我的文章 写文章
C++中的*this和this指针
2023-07-12 07:13:43 深夜i     --     --
C++ this指针 this *this 对象指针

在C++中,有两个跟对象有关的this指针:*this和this。尽管这两个指针看似相似,但它们实际上有着非常不同的作用。

首先来看*this。它指向当前对象本身。this指针只能用在非静态成员函数中,因为静态成员函数没有this指针。对于一个对象中的成员函数,使用*this指针可以访问和修改对象的数据成员。例如:


class MyClass {

public:

void setValue(int x)

this->value = x;

private:

int value;

};

int main() {

MyClass obj;

obj.setValue(42); // 等价于 obj.value = 42;

return 0;

}

这里,成员函数setValue()使用了*this指针来修改对象的value成员。需要注意的是,this指针指向的是当前对象本身,因此可以省略this关键字,直接使用成员变量的名称来引用。但是,为了更加清晰地表达,有时候使用this指针是很有必要的。

接下来是this指针。它也指向当前对象,但它可以在类的任何成员函数中使用,包括静态成员函数。因此,this指针可以用来比较两个对象是否相等,例如:


class MyClass {

public:

bool isEqual(const MyClass& other)

return this == &other;

private:

int value;

};

int main() {

MyClass obj1, obj2;

if (obj1.isEqual(obj2))

std::cout << "Two objects are equal." << std::endl;

return 0;

}

这里,成员函数isEqual()使用this指针来比较当前对象和其他对象是否相等。注意这里的参数是一个常引用,因为我们不需要修改传入的对象。

总的来说,this指针和*this的作用是不同的,但它们都是非常重要的对象指针。使用它们可以在成员函数中访问和修改对象的成员变量,并比较两个对象是否相等。熟练地掌握这两个指针对于深入理解C++对象的实现和使用是非常有帮助的。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复