В чем разница между const virtual и virtual const?
Я видел, что некоторая функция в C++ была объявлена как
virtual const int getNumber();
но в чем разница, если функция объявлена как следующая?
const virtual int getNumber();
в чем разница между этими двумя?
4 ответов
как уже было сказано, разницы нет. Однако, обратите внимание, что эти два do differ:
virtual const int getNumber();
virtual int getNumber() const;
в первом способе, const относится к возвращаемому значению типа int.
во втором способе, const относится к объекту, на который вызывается метод; то есть this будет иметь тип T const * внутри этого метода, - вы сможете назвать только const методы, изменить только mutable поля и так далее.
нет никакой разницы. Если мы посмотрим на резюме грамматики для decl-спецификатор-seq мы видим, что он определен рекурсивным образом:
decl-specifier:
type-specifier
decl-specifier-seq:
decl-specifier decl-specifier-seq
единственное ограничение это const и volatile можно комбинировать с любым спецификатором типа, кроме самих себя (нет const const, volatile volatile и т. д.), Нет правила о порядке, в котором вы их используете.