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
comment:2 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Формально написать значение по умолчанию в виртуальной функции можно. Вот здесь написан корректный ответ https://stackoverflow.com/a/53329379
Повторю ключевой момент: https://godbolt.org/z/syuz6t
Причина не использовать значения по умолчанию в интерфейсе - непрозрачность.
В C++ на самом деле обработка ошибок с помощью кодов возврата не является предпочтительной, поскольку есть exceptions.
Часть того, что обрабатывается с помощью кодов возврата, лучше было бы обработать с помощью assert-ов, поскольку нарушается контракт (просят что-то сделать с отсутствующим объектом, добавляют больше, чем можно, ... - это все ошибки в написании кода, а не времени работы приложения)