rat*_*zip 12 c++ virtual const
我看到C++中的某些函数被声明为
virtual const int getNumber();
Run Code Online (Sandbox Code Playgroud)
但是如果函数声明如下,有什么区别?
const virtual int getNumber();
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别?
lis*_*rus 23
如前所述,没有区别.但请注意,这两者确实不同:
virtual const int getNumber();
virtual int getNumber() const;
Run Code Online (Sandbox Code Playgroud)
在第一种方法中,const指的是返回的类型值int.
在第二种方法中,const指的是调用方法的对象; 也就是说,this将T const *在此方法中包含类型, - 您将只能调用const方法,仅修改mutable字段等.
小智 9
没有区别.如果我们查看decl-specifier-seq的语法摘要,我们可以看到它是以递归方式定义的:
decl-specifier:
type-specifier
decl-specifier-seq:
decl-specifier decl-specifier-seq
唯一的限制是,const和volatile可以与任何类型说明符本身除外(不合并const const,volatile volatile等等),还有在其中使用它们的顺序没有规则.