允许一将一个对象的成员函数调用的结果返回给另一个成员函数,从而可以在一行代码中执行多个操作。使得代码更加简洁,易读、易维护。
首先先创建一个类:
class Stu{
public:
int a;
Stu(int a)
{
this->a = a; //拷贝构造函数
}
Stu &add_get(Stu &p1) //定义了一个类类型的函数
{
this->a += p1.a;
return *this; //放回*this,等于返回Stu本身
}
};
其中重点为:
Stu &add_get(Stu &p1) //定义了一个类类型的函数
{
this->a += p1.a;
return *this; //放回*this,等于返回Stu本身
}
注意:
返回值类型必须是对象的引用,因为如果是值的话,会调用复制构造函数,生成了副本,后续的链式编程,只有第一个会生效,后面的都是针对新生成的副本在进行操作。
整体代码:
#include <iostream> //标准的输入输出流
#include<string.h>
#include<stdlib.h>
#include<cmath>
#include<time.h>
#include<string>
using namespace std;
class Stu{
public:
int a;
Stu(int a)
{
this->a = a;
}
Stu &add_get(Stu &p1)
{
this->a += p1.a;
return *this;
}
};
int main(void)
{
Stu p1(20);
Stu p2(20);
p2.add_get(p1).add_get(p1).add_get(p1).add_get(p1); //链式编程,因为p2.add_get(p1) = p2
cout << " p2.a = " << p2.a << endl;
system("pause");
return 0;
}