【发布时间】:2015-05-26 14:41:19
【问题描述】:
我看到 C++ 中的某些函数被声明为
virtual const int getNumber();
但是如果函数声明如下有什么区别呢?
const virtual int getNumber();
这两者有什么区别?
【问题讨论】:
-
请注意,
const在这里没有任何用处。
我看到 C++ 中的某些函数被声明为
virtual const int getNumber();
但是如果函数声明如下有什么区别呢?
const virtual int getNumber();
这两者有什么区别?
【问题讨论】:
const 在这里没有任何用处。
如前所述,没有区别。但是,请注意这两个确实不同:
virtual const int getNumber();
virtual int getNumber() const;
在第一种方法中,const指的是int类型的返回值。
在第二种方法中,const 指的是调用该方法的对象;也就是说,this 在此方法中将具有 T const * 类型,-您将只能调用 const 方法,仅修改 mutable 字段等等。
【讨论】:
没有区别。声明的说明符通常可以按任何顺序编写。
【讨论】:
没有区别。如果我们查看 decl-specifier-seq 的语法摘要,我们可以看到它是以递归方式定义的:
decl 说明符:
类型说明符
声明说明符序列:
decl-specifier decl-specifier-seq
唯一的限制是const 和volatile 可以与除它们自身之外的任何类型说明符组合(不能与const const、volatile volatile 等),您使用它们的顺序没有规则。
【讨论】:
没有区别。您可以按照自己喜欢的顺序应用修饰符。
【讨论】: