const虚拟和虚拟const有什么区别?

时间:2015-03-23 14:40:43

标签: c++ const virtual

我看到C ++中的某些函数被声明为

virtual const int getNumber();

但是如果将函数声明为以下内容会有什么区别?

const virtual int getNumber();

这两者有什么区别?

4 个答案:

答案 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

唯一的限制是constvolatile可以与除自身之外的任何类型说明符组合使用(无const constvolatile volatile等),没有规则你使用它们的顺序。

答案 3 :(得分:2)

没有区别。您可以按自己喜欢的顺序应用修改器。