C++纯虚拟const成员函数

Chi*_*hin 43 c++

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

virtual void print() = 0 const;
Run Code Online (Sandbox Code Playgroud)

或者像这样?

virtual const void print() = 0;
Run Code Online (Sandbox Code Playgroud)

rai*_*7ow 59

来自Microsoft Docs:

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

所以它应该是:

virtual void print() const = 0;
Run Code Online (Sandbox Code Playgroud)


Ada*_*eld 20

只有virtual void print() const = 0表格是可以接受的.看一下C++03§9/ 2中的语法规范:

member-declarator:
    declarator pure-specifier opt
     declarator constant-initializer opt
     identifier opt : constant-expression

纯符:
    = 0

const是金声明符 -它的CV限定符序列选择直接说明符(§8/ 4):

声明者:
    直接声明者
    ptr-operator*声明者*

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

因此,= 0必须在之后const.


πάν*_*ῥεῖ 6

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

virtual void print() const = 0;
Run Code Online (Sandbox Code Playgroud)