21xrx.com
2024-05-20 13:38:39 Monday
登录
文章检索 我的文章 写文章
C++返回*this语句的作用及用法
2023-07-11 21:55:20 深夜i     --     --
C++ 返回*this 作用 用法 语句

C++中的返回*this语句是一个常见的语法,在程序中经常被使用。它的主要作用是返回当前对象的引用。*this指向当前对象本身,将其返回,则可以对当前对象进行修改。

在C++中,函数返回值有以下几种形式:

1. 不返回任何值:该类型的函数没有返回值,使用void来声明。

2. 返回基本数据类型:函数可以返回C++内置的基本数据类型,如int、char、float、double等。

3. 返回自定义数据类型:函数可以返回用户定义的数据类型,如结构体、类等。

在第三种情况下,如果希望在类的方法中修改当前对象的值,可以使用返回*this的语法。这种方法非常常见,特别是当类的方法需要更新当前对象时。例如:


class MyClass {

 public:

  MyClass& increment() {

   m_value++;

   return *this;

  }

 private:

  int m_value = 0;

};

int main() {

 MyClass obj;

 obj.increment().increment().increment(); // chain calls to increment

 std::cout << obj.getValue() << '\n';   // prints 3

 return 0;

}

上面的例子中,increment()方法返回MyClass的引用,可以连续调用多次increment()方法。每次调用都会修改m_value的值,这样最终结果就是3。

另一个例子:


class MyString {

 public:

  MyString& operator+=(const MyString& rhs) {

   m_data.append(rhs.m_data);

   return *this;

  }

 private:

  std::string m_data;

};

int main() {

 MyString s1"Hello, s2{" world!"};

 s1 += s2;    // concatenates s1 and s2

 std::cout << s1.getString() << '\n';  // prints "Hello, world!"

 return 0;

}

这个例子中,MyString类重载了+运算符。当执行s1 += s2时,相当于执行s1.operator+=(s2),该方法返回MyString的引用,所以可以使用返回*this的语法。s1 += s2将s2追加到s1的后面,最终结果是"Hello, world!"。

总之,C++中的返回*this语句是一种便于修改当前对象的技巧。这种方法常用于自定义类型,特别是类和结构体中。使用该语句可以让代码更加清晰易懂,并提高代码的可读性和可维护性。

  
  

评论区

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