constでもある純粋仮想メンバー関数を宣言するにはどうすればよいですか?このようにできますか?
virtual void print() = 0 const;
またはこのように?
virtual const void print() = 0;
constでもある純粋仮想メンバー関数を宣言するにはどうすればよいですか?このようにできますか?
virtual void print() = 0 const;
またはこのように?
virtual const void print() = 0;
定数メンバー関数を宣言するに
const
は、引数リストの閉じ括弧の後にキーワードを配置します。
したがって、次のようになります。
virtual void print() const = 0;
フォームのみvirtual void print() const = 0
が受け入れられます。C++03§9/2の文法仕様を見てください。
member-declarator:
declarator pure-specifier opt declarator
constant-initializeropt
識別子 optconstant:
-expression純粋な指定子:
= 0
これは宣言子const
の一部です-直接宣言子のcv-qualifier- seqoptです(§8/ 4):
declarator:
direct-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
。
もちろんできます。正しい構文は次のとおりです。
virtual void print() const = 0;
これを試して:-
virtual void print() const = 0;