47

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

virtual void print() = 0 const;

还是这样?

virtual const void print() = 0;
4

4 回答 4

65

微软文档

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

所以应该是:

virtual void print() const = 0;
于 2012-11-07T18:12:37.833 回答
20

只有virtual void print() const = 0形式是可以接受的。看看 C++03 §9/2 中的语法规范:

member-declarator :
    声明符 纯说明符opt
    声明符 常量初始化器opt
    标识符opt : 常量表达式

纯说明符:
    = 0

const声明符的一部分——它是直接声明符中的cv-qualifier-seq选项(第 8/4 节):

declarator :
    直接声明
    符 ptr-operator *declarator*

direct-declarator :
    declarator-id
    direct-declarator ( parameter-declaration-clause ) cv-qualifier-seq opt exception-specification opt
     direct-declarator [ constant-expression opt ]
    ( declarator )

因此,= 0必须在 之后const

于 2012-11-07T18:19:51.740 回答
6

当然可以。正确的语法是:

virtual void print() const = 0;
于 2012-11-07T18:12:14.417 回答
4

尝试这个:-

 virtual void print()  const = 0;
于 2012-11-07T18:12:47.053 回答