Предположим, что Foo
- довольно большая структура данных. Как написать виртуальную функцию const
, которая возвращает экземпляр Foo
, если я не знаю, будет ли унаследованный класс хранить экземпляр Foo
внутренне; таким образом, обеспечивая возврат по ссылке. Если я не могу сохранить его внутренне, я понимаю, что я не могу вернуть ссылку const
, потому что он будет временным. Это верно? Возможны два варианта:
virtual Foo foo() const { ... }
virtual Foo const & foo() const { ... }
Здесь связанный вопрос, но под другим углом.