C++纯虚const成员函数

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/13275583/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-27 17:08:40  来源:igfitidea点击:

C++ pure virtual const member function

c++

提问by Chin

How can I declare a pure virtual member function that is also const? Can I do it like this?

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

virtual void print() = 0 const;

or like this?

或者像这样?

virtual const void print() = 0;

回答by raina77ow

From Microsoft Docs:

来自微软文档

To declare a constant member function, place the constkeyword after the closing parenthesis of the argument list.

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

So it should be:

所以应该是:

virtual void print() const = 0;

回答by Adam Rosenfield

Only the virtual void print() const = 0form is acceptable. Take a look at the grammar specification in C++03 §9/2:

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

member-declarator:
    declarator pure-specifieropt
    declarator constant-initializeropt
    identifieropt:constant-expression

pure-specifier:
    = 0

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

纯说明符:
    = 0

The constis part of the declarator-- it's the cv-qualifier-seqoptin the direct-declarator(§8/4):

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

declarator:
    direct-declarator
    ptr-operator*declarator*

direct-declarator:
    declarator-id
    direct-declarator(parameter-declaration-clause)cv-qualifier-seqoptexception-specificationopt
    direct-declarator[constant-expressionopt]
    (declarator)

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

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

Hence, the = 0must come after the const.

因此,= 0必须在 之后const

回答by π?ντα ?ε?

Of course you can. The correct syntax is:

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

virtual void print() const = 0;

回答by Rahul Tripathi

Try this:-

尝试这个:-

 virtual void print()  const = 0;