Пишу я, значит, лабу - надо организовать двойную очередь шаблонным классом и продемонстрировать работу в main() - и тут до меня доходит, что я не знаю, как работает тернарная операция ?:
template
Ответ
В первом случае вызывается конструктор копирования TInfo(front->info) или конструктор TInfo(0) - тернарной операции надо второе и третье выражения обязательно привести к одному типу, если это возможно. Она это и делает. Поэтому получается, что возвращается ссылка на временный анонимный стековый объект в любом случае, даже вместо front->info. Во втором случае необходимость создания анонимного экземпляра возникает только в return 0; , что оказывается эквивалентно return TInfo(0); . В обоих случаях, видимо, не выдается предупреждение, т.к. возвращается const TInfo&. UPD: "видимо" - потому что не компилировал, нет сейчас возможности.
Комментариев нет:
Отправить комментарий