例子:
class A
{
public:
A(int val = 1):a(val){}
A addA(const A &obj)
{
this->a = this->a + obj.a;
return *this;
}
int a;
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
A classA(10);
A classA2(1);
qDebug() << endl;
qDebug() << classA.addA(classA2).addA(classA2).addA(classA2).a << endl;
qDebug() << classA.a << endl;
return a.exec();
}
输出结果:
分析:addA返回的是一个*this的副本,第一个输出是13,但是classA中的a只是11而已;倘若将addA函数的返回值加上引用符号,第二个qDebug将输出13即classA中的a是13,这就是链式编程思想,cout中的 “<<”也是代表了链式编程思想
改成:
A& addA(const A &obj)
{
this->a = this->a + obj.a;
return *this;
}
输出结果: