47

constでもある純粋仮想メンバー関数を宣言するにはどうすればよいですか?このようにできますか?

virtual void print() = 0 const;

またはこのように?

virtual const void print() = 0;
4

4 に答える 4

65

Microsoft Docsから:

定数メンバー関数を宣言するにconstは、引数リストの閉じ括弧の後にキーワードを配置します。

したがって、次のようになります。

virtual void print() const = 0;
于 2012-11-07T18:12:37.833 に答える
20

フォームのみ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

于 2012-11-07T18:19:51.740 に答える
6

もちろんできます。正しい構文は次のとおりです。

virtual void print() const = 0;
于 2012-11-07T18:12:14.417 に答える
4

これを試して:-

 virtual void print()  const = 0;
于 2012-11-07T18:12:47.053 に答える