Kalombyr
@Kalombyr

Как правильно сделать цепочки вызовов методов одного класса?

Добрый день!
Хочу сделать, что бы методы класса можно было вызывать по цепочке, к перимеру:
MyClass * myClass = new MyClass();
myClass->summ(10).retract(4).div(2).cast(1);
......
......
delete myClass;

Разумеется, для этого достаточно, что бы каждый метод возвращал экземпляр класса, и в этом вопрос - что возвращать и почему?
MyClass &summ(int) {  return *this; }
// ИЛИ
MyClass *summ(int) {  return this; }

Как видите, можно возвращать либо ссылку, либо указатель.
Что будет в данном случае наиболее верно и почему?
P.S. Конструктор копирования достаточно сложный.
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
можно возвращать либо ссылку, либо указатель.
Что будет в данном случае наиболее верно и почему?

Хочешь писать myClass->summ(10).retract(4).div(2).cast(1); -- возвращай ссылку, хочешь myClass->summ(10)->retract(4)->div(2)->cast(1); -- возвращай указатель. В остальном нет никакой разницы.

Конструктор копирования достаточно сложный.

Абсолютно не важно, если ты не собираешься возвращать объект вместо ссылки или указателя.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы