如何声明一个既是纯虚函数又是const成员函数?我可以这样做吗?
virtual void print() = 0 const;
还是像这样?
virtual const void print() = 0;
如何声明一个既是纯虚函数又是const成员函数?我可以这样做吗?
virtual void print() = 0 const;
还是像这样?
virtual const void print() = 0;
virtual void print() const = 0
形式是可接受的。请查看C++03 §9/2中的语法规范:
member-declarator:
declarator pure-specifieropt
declarator constant-initializeropt
identifieropt :
constant-expression
pure-specifier:
= 0
const
是declarator的一部分-它是direct-declarator中的cv-qualifier-seqopt(§8/4):
declarator:
direct-declarator
ptr-operator *declarator*
direct-declarator:
declarator-id
direct-declarator (
parameter-declaration-clause )
cv-qualifier-seqopt exception-specificationopt
direct-declarator [
constant-expressionopt ]
(
declarator )
因此,= 0
必须在const
之后。virtual void print() const = 0;
试试这个:
virtual void print() const = 0;
virtual void print() const = 0;
的意思是定义一个纯虚函数print,该函数没有实现并且不能被调用,只能被子类继承并实现。这个函数是虚函数,并带有const限定符,表示该函数不会修改成员变量的值。 - chris