C++ 类this及返回自身对象的引用方式
this指针
每个非静态成员函数都有一个隐含的形参,即指向该类对象的指针。这个指针就是this指针。通过this指针,我们可以访问到类的所有成员变量和成员函数。
在C++中,关键字this用来指向当前对象。this指针是一个隐式参数,它在成员函数内部使用。
返回自身对象的引用
在C++中,返回自身对象的引用是一种常见的编程技巧。它可以方便地实现连续的函数调用,即链式调用。如:
Car myCar;
myCar.setName("Tesla").setColor("Black").setPrice(100000);
返回自身对象的引用是通过在函数声明处加上引用符&实现的。示例代码如下:
class Car {
public:
Car& setName(string _name) {
name = _name;
return *this;
}
Car& setColor(string _color) {
color = _color;
return *this;
}
Car& setPrice(double _price) {
price = _price;
return *this;
}
private:
string name;
string color;
double price;
};
在上面的代码中,setName、setColor和setPrice函数都返回了当前对象的引用。
这样,我们就可以通过链式调用的方式设置对象的属性值。例如:
Car myCar;
myCar.setName("Tesla").setColor("Black").setPrice(100000);
这段代码可以等价于以下代码:
Car myCar;
myCar.setName("Tesla");
myCar.setColor("Black");
myCar.setPrice(100000);
但是,使用链式调用可以使代码更加简洁明了。
示例代码
下面给出一个更加完整的示例代码:
#include <iostream>
#include <string>
using namespace std;
class Car {
public:
Car& setName(string _name) {
name = _name;
return *this;
}
Car& setColor(string _color) {
color = _color;
return *this;
}
Car& setPrice(double _price) {
price = _price;
return *this;
}
void display() {
cout << "name: " << name << endl;
cout << "color: " << color << endl;
cout << "price: " << price << endl;
}
private:
string name;
string color;
double price;
};
int main() {
Car myCar;
myCar.setName("Tesla").setColor("Black").setPrice(100000);
myCar.display();
return 0;
}
输出结果为:
name: Tesla
color: Black
price: 100000
在上面的代码中,我们定义了一个Car类,并重载了setName、setColor和setPrice函数,使它们可以返回当前对象的引用。然后,在主函数中创建了一个Car对象myCar,并使用链式调用的方式设置了其属性值。最后,调用了display函数显示结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 类this及返回自身对象的引用方式 - Python技术站