如何声明也是const的纯虚拟成员函数?我可以这样做吗?
virtual void print() = 0 const;
还是喜欢这个?
virtual const void print() = 0;
答案 0 :(得分:58)
答案 1 :(得分:18)
只接受virtual void print() const = 0
表单。看一下C ++03§9/ 2中的语法规范:
构件声明符:
declarator pure-specifier opt
声明符常量初始值设定项 opt
标识符 opt:
常量表达式纯说明符:
= 0
const
是声明符的一部分 - 它是中的 cv-qualifier-seq opt 直接声明者(§8/ 4):
声明符:
直接声明符
ptr-operator *声明者*直接声明符:
声明符-ID
direct-declarator(
parameter-declaration-clause)
cv-qualifier-seq opt exception-说明书<子>选择子>
direct-declarator[
constant-expression opt]
(
声明者)
因此,= 0
必须在const
之后。
答案 2 :(得分:6)
当然可以。正确的语法是:
virtual void print() const = 0;
答案 3 :(得分:4)
试试这个: -
virtual void print() const = 0;