struct empty_stack: std::exception // don't know what the code after : means
Это означает, что empty_stack
публично наследует от std::exception
, который является базовым классом для стандартных исключений.
Примечание: Если тип наследования не указан, тип наследования по умолчанию зависит от типа наследования. Это private
, если тип наследования class
и public
, если тип наследования struct
.
const char* what() const throw(); //don't understand this line either
Это означает, что what()
- это функция, которая не изменяет неизменяемые члены класса, частью которого она является, и не вызывает никаких исключений. Но немного вводить в заблуждение throw()
в конце означает, что он не бросает.
Итак, начиная с C ++ 11, мы имеем спецификатор noexcept
. Использование этого в объявлении функции, подобном приведенному ниже, означает, что функция объявлена, чтобы не выдавать никаких исключений.
const char* what() const noexcept;
Примечание : throw()
устарело и будет удалено в C ++ 20.