Я читал комментарии в книге Herb Sutter Guru of the week о функциях virtual
и, наконец, заметил, что он упоминает об этом:
[...] "использование финала реже" - ну, они вроде бы. Я не знаю многих, и во время стандартизации Бьярн неоднократно просил примеры проблем, которые он решил, и шаблоны, где он должен использоваться, и я не помню каких-либо крупных, которые выделялись. Единственный, кого я знаю из-за того, что если вы определяете библиотечный модуль (который еще не является стандартным понятием), то окончание листовых классов может дать компилятору больше информации для девиртуализации вызовов из-за знания кода вне библиотеки, а не последующего вывода, но Im не уверен, насколько важно это в наши дни при всей оптимизации программы, включая агрессивную девиртуализацию.
Этот ответ не содержит много примеров о случаях использования final
для классов, и мне было бы интересно узнать, какие проблемы он действительно может решить. Знаете ли вы кого-нибудь, или final
на классах станут лишь некоторой неясной и почти неиспользуемой функцией?