Подтвердить что ты не робот

Чистая виртуальная константная функция С++

Как я могу объявить чистую виртуальную функцию-член, которая также является константой? Могу ли я сделать это так?

virtual void print() = 0 const;

или как это?

virtual const void print() = 0;
4b9b3361

Ответ 1

Чтобы объявить константную функцию-член, поместите ключевое слово const после закрывающая скобка списка аргументов.

Итак, это должно быть:

virtual void print() const = 0;

Ответ 2

Допускается только форма 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.

Ответ 3

Конечно, вы можете. Правильный синтаксис:

virtual void print() const = 0;

Ответ 4

Попробуйте следующее: -

 virtual void print()  const = 0;