C ++纯虚拟const成员函数

时间:2012-11-07 18:10:34

标签: c++

如何声明也是const的纯虚拟成员函数?我可以这样做吗?

virtual void print() = 0 const;

还是喜欢这个?

virtual const void print() = 0;

4 个答案:

答案 0 :(得分:58)

来自Microsoft Docs

  

要声明常量成员函数,请在后面放置const关键字   参数列表的右括号。

所以它应该是:

virtual void print() const = 0;

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