Я изучаю C++, но мне трудно понять, как объекты возвращаются функцией-членом/методом. Я следую за «Научим себя C++ в 21 день».Возвращение путаницы объекта
Итак, я понимаю классы и объекты, а не просто о возвращении объекта. Я приведу пример (в настоящее время обучая перегрузку оператора).
const Counter& Counter::operator++()
{
++itsVal;
return *this;
}
Я просто очень смущен обратным типом. Этот метод говорит, что он должен возвращать ссылку на объект счетчика, но когда объект разыменовывается с
return *this;
Разве мы не просто возвращающий объект счетчика класса? Почему заголовок функции говорит, что мы возвращаем ссылку на объект-счетчик? Почему заголовок метода просто не говорит о том, что возвращаемый тип является объектом типа Counter? Здесь я смущаюсь: \
Как я могу подумать об этом, так как ссылка в основном является псевдонимом чего-то, возврат указателя с разыменованием будет напоминать возврат псевдонима объектов, поскольку объекты имеют имена, которые помогают нам идентифицировать их. Я действительно не знаю, я надеюсь, что кто-то здесь сможет мне это объяснить.
возвращающий объект класса Couter создаст копию (второй экземпляр), таким образом, основная идея программирования состоит в том, чтобы иметь оператор точки для одного и того же экземпляра объекта. Извините, мой английский, больше не могу объяснить. –
согласен с @Sam Varshavchik, технология многоточечного оператора продвинута (такое обозначение является частью этого). Изучите базовый по значению/по ссылочному примеру. –
Вы уверены, что есть 'const'? Это очень нетрадиционно и непрактично, и в отличие от встроенного префикса '++'. –