浅析C/C++ 中 return *this 和 return this 的区别
在 C/C++ 中,this
指针指向当前对象,*this
则代表对象本身。在函数中,return *this
和 return this
实现的功能大致相同,但是两者仍有一定的区别。
return *this
return *this
关键字语句出现时,函数返回的是对象本身,以供当前对象进行链式调用(chaining)操作,常用于实现方法的链式调用接口。下面是实例代码:
#include <iostream>
class Person {
public:
Person& setAge(int age) {
this->age = age;
return *this;
}
Person& setName(std::string name) {
this->name = name;
return *this;
}
void display() {
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
private:
std::string name;
int age;
};
int main() {
Person p;
p.setName("Alice").setAge(25).display();
return 0;
}
这里的 setName
和 setAge
都是返回 *this
指针,即对象本身。
return this
与 return *this
不同的是,return this
返回的是一个指向当前对象的指针。这种返回类型通常用于一些特殊的场合,例如实现成员函数的递归调用。
在这种情况下,需要用到指向当前对象的指针。
下面是一个简单的示例,实现了一个 getNum
函数,该函数返回当前对象的编号。
#include <iostream>
class MyClass {
public:
MyClass(int id): id_(id) {}
int getNum() {
return this->id_;
}
private:
int id_;
};
int main() {
MyClass obj(100);
std::cout << "MyClass object's id is: " << obj.getNum() << std::endl;
return 0;
}
这里的 getNum
函数返回的是指向当前对象的指针,即 this->id_
。
总结
总之,return *this
和 return this
关键字语句的功能有所不同。在链式调用中,常用的是 return *this
,返回对象本身的指针,在某些场合,需要返回指向当前对象的指针,应使用 return this
语句。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅析C/C++ 中return *this和return this的区别 - Python技术站