我看到C ++中的某些函数被声明为
virtual const int getNumber();
但是如果将函数声明为以下内容会有什么区别?
const virtual int getNumber();
这两者有什么区别?
答案 0 :(得分:23)
如前所述,没有区别。但请注意,这两个执行不同:
virtual const int getNumber();
virtual int getNumber() const;
在第一种方法中,const
指的是int
类型的返回值。
在第二种方法中,const
指的是调用该方法的对象;也就是说,this
在此方法中将包含T const *
类型, - 您只能调用const
个方法,仅修改mutable
个字段,等等。
答案 1 :(得分:20)
没有区别。声明的说明符通常可以按任何顺序编写。
答案 2 :(得分:9)
没有区别。如果我们查看 decl-specifier-seq 的语法摘要,我们可以看到它是以递归方式定义的:
decl-specifier: type-specifier decl-specifier-seq: decl-specifier decl-specifier-seq
唯一的限制是const
和volatile
可以与除自身之外的任何类型说明符组合使用(无const const
,volatile volatile
等),没有规则你使用它们的顺序。
答案 3 :(得分:2)
没有区别。您可以按自己喜欢的顺序应用修改器。