В чем разница между 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
и т. д.), Нет правила о порядке, в котором вы их используете.