Ответ 1
Чтобы объявить константную функцию-член, поместите ключевое слово const после закрывающая скобка списка аргументов.
Итак, это должно быть:
virtual void print() const = 0;
Как я могу объявить чистую виртуальную функцию-член, которая также является константой? Могу ли я сделать это так?
virtual void print() = 0 const;
или как это?
virtual const void print() = 0;
Чтобы объявить константную функцию-член, поместите ключевое слово const после закрывающая скобка списка аргументов.
Итак, это должно быть:
virtual void print() const = 0;
Допускается только форма virtual void print() const = 0
. Взгляните на спецификацию грамматики в С++ 03 §9/2:
член-описатель:
декларатор pure-specifier opt
declarator константа-инициализатор opt
идентификатор opt:
константное выражениечисто спецификатор:
= 0
const
является частью декларатора - это cv-qualifier-seq opt в прямом деклараторе (§8/4):
описатель:
прямой описатель
ptr-operator * declarator *прямой описатель:
описатель-идентификатор
direct-declarator(
параметр-объявление-предложение)
cv-qualifier-seq opt исключение-спецификация opt
direct-declarator[
константное выражение opt]
(
declarator)
Следовательно, = 0
должен появиться после const
.
Конечно, вы можете. Правильный синтаксис:
virtual void print() const = 0;
Попробуйте следующее: -
virtual void print() const = 0;