someObj.someFunc()
может возвращать ссылку на someObj
, например:
class ClassName {
ClassName &someFunc() {
return *this; // return current object, nothing created
}
};
ClassName someObj;
someObj.someFunc().someFunc(); // chain function calls on same object
ClassName().someFunc().someFunc(); // same, but now object is a temporary
Это также работает с прямым типом возвращаемого объекта, в отличие от ссылки. В этом шаблоне объект может изменяться на каждом этапе.
class ClassName {
ClassName increment() const {
return *this + 1; // return a newly created object
}
};
ClassName someObj;
someObj.increment().increment(); // does not modify someObj, returns temporary
Ключ к пониманию такого кода всегда заключается в рассмотрении объявления интересующей функции.