Для каскадных вызовов функций-членов, зачем мне возвращать ссылку? Почему этого указателя недостаточно?

#include <iostream>

using namespace std;

class armon {
int a;
int b;

public:
armon(int newA, int newB) : a(newA), b(newB) {}

armon setA(int newA) {
a = newA;
return *this;
}

armon setB(int newB) {
b = newB;
return *this;
}

void print(void) { cout << a << endl << b; }
};

int main() {
armon s(3, 5);

s.setA(8).setB(9);

s.print();
}
  1. Почему я не могу просто вернуть объект с указателем this, чтобы сделать
    каскадные вызовы функций?
  2. Зачем мне возвращать ссылку на объект?
  3. Что бы это вообще делало?

0

Решение

возврате this указатель будет тоже достаточно. Однако синтаксис каскадного вызова должен будет измениться в середине цепочки:

s.setA(8)->setB(9)->setC(10);

Это не выглядит согласованным, поэтому возврат ссылки — лучший выбор.

6

Другие решения


По вопросам рекламы [email protected]