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
C++ pure virtual const member function
提问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
const
keyword 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 = 0
form 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-expressionpure-specifier:
= 0
member-declarator:
declarator pure-specifier opt
declarator constant-initializer opt
identifier opt:
constant-expression纯说明符:
= 0
The const
is 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 = 0
must 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;