使用 c++ 一些表示灵活数据体的对象时,经常会看到形如 a.reshape({1, 2}).add(1)
这样连续的成员函数调用,这是怎么实现的呢?其实很简单,只需要让需要被连续调用的成员函数最后返回该对象的引用(不能是拷贝)即可:
class A {
public:
A& setN(int n) {
_n = n;
return *this;
}
int _n;
};
// 以下两种写法等价:
// A a; a.setN(1).setN(2);
// A a; a._n = 1; A& b = a; b._n = 2;
一个简单的例子
class Demo {
public:
Dem