21xrx.com
2024-11-22 02:22:56 Friday
登录
文章检索 我的文章 写文章
C++中的*this和this指针
2023-07-14 01:00:22 深夜i     --     --
C++ this this指针 *this 引用

C++中的*this和this指针是非常重要的概念,尤其是在面向对象编程中。本文将深入探讨这两个概念的含义和用法。

首先,this是一个指向当前对象的指针。它表示当前正在使用这个类的对象的地址。当在类的成员函数中使用this时,可以用this指针来访问对象的成员变量和成员函数。

比如,以下代码中的this指针表示当前对象的地址:


class MyClass{

public:

  int val;

  void setVal(int v)

    this->val = v;

  

};

在这个例子中,setVal函数将传入的参数v赋值给当前对象的val变量,this指针就可以帮助我们引用这个对象。

另一个需要注意的概念是*this。它是一个指向当前对象的引用。和指针不同的是,引用在定义之后就不能再指向其他对象了,而指针却可以。使用*this可以方便地在当前对象和其他对象之间传递数据。

假设我们有一个名为MyClass的类,它有一个名为add函数。作为一个静态函数,它接受两个MyClass对象作为参数,并返回它们的和:


class MyClass {

public:

  int val;

  static MyClass add(MyClass &a, MyClass &b) {

    MyClass result;

    result.val = a.val + b.val;

    return result;

  }

};

MyClass obj1, obj2;

MyClass result = MyClass::add(obj1, obj2);

这个add函数创建了一个新的MyClass对象result,并将obj1和obj2的val相加,赋值给了result的val。

改进我们刚才的add函数,使用*this指针:


class MyClass {

public:

  int val;

  MyClass add(MyClass &other) {

    MyClass result;

    result.val = this->val + other.val;

    return result;

  }

};

MyClass obj1, obj2;

MyClass result = obj1.add(obj2);

使用add函数时,this指针就指向了当前对象,而other就是传入的另一个对象。这样,我们就可以用更自然的方式来调用和使用add函数了。

总的来说,this和*this对于C++的面向对象编程来说是非常重要的概念,它们帮助我们更好地理解和使用类和对象。我们需要深入掌握这些概念的用法,并在实际开发中善于运用。

  
  
下一篇: 消息传递实现

评论区

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