Opened 4 years ago

Closed 4 years ago

#605 closed ожидается проверка (задача сдана)

WW 10

Reported by: Roman Venediktov Owned by: Sokolov Viacheslav
Component: WW figures Version: 1.0
Keywords: Cc:

Description

Как мне написал CLion, в случае виртуальных функций запрещено использовать аргументы по умолчанию, в интернете тоже вроде сказали, что это не очень хорошо в некотрых случаях. Это всегда запрещено или, например, если я хочу, чтобы во всех наследниках было такое-же значение по умолчанию, то можно? Если нельзя, то как можно это заменить? (Я хотел сделать print(FILE *out_stream = stdout))

Change History (2)

comment:1 Changed 4 years ago by Sokolov Viacheslav

В C++ на самом деле обработка ошибок с помощью кодов возврата не является предпочтительной, поскольку есть exceptions.

Часть того, что обрабатывается с помощью кодов возврата, лучше было бы обработать с помощью assert-ов, поскольку нарушается контракт (просят что-то сделать с отсутствующим объектом, добавляют больше, чем можно, ... - это все ошибки в написании кода, а не времени работы приложения)

comment:2 Changed 4 years ago by Sokolov Viacheslav

Resolution: задача сдана
Status: assignedclosed

Формально написать значение по умолчанию в виртуальной функции можно. Вот здесь написан корректный ответ https://stackoverflow.com/a/53329379
Повторю ключевой момент: https://godbolt.org/z/syuz6t

Причина не использовать значения по умолчанию в интерфейсе - непрозрачность.

Note: See TracTickets for help on using tickets.