我看到C++中的某些函数被声明为
virtual const int getNumber();
但如果将函数声明为以下方式,有什么区别呢?
const virtual int getNumber();
这两者之间有什么区别?
正如已经提到的,它们没有区别。然而,请注意这两个确实有所不同:
virtual const int getNumber();
virtual int getNumber() const;
const
指的是返回类型为 int
的返回值。const
指的是调用该方法的对象;也就是说,在该方法内部,this
的类型为 T const *
,你只能调用 const
方法、修改 mutable
字段等。没有区别。一个声明的修饰符通常可以以任何顺序书写。
没有任何区别。如果我们查看 decl-specifier-seq 的语法摘要,我们可以看到它以递归方式定义:
decl-specifier: 类型说明符
decl-specifier-seq: decl-specifier decl-specifier-seq
唯一的限制是 const
和 volatile
可以与除它们自己以外的任何类型说明符组合使用(不允许使用 const const
、volatile volatile
等),没有规定使用它们的顺序。
const
没有任何有用的作用。 - user541686