関数定義の最初の行に含まれる宣言行 (通常はヘッダー ファイルに配置される) の正確な部分については、私ははっきりとはわかっていません。一部のキーワードは、定義内で繰り返されるとコンパイルが失敗する原因になりますが、そうでないものもあります。
例として、 から継承された例外クラスを考えてみましょうstd::exception
。関数の再定義はwhat()
通常次のようになります
virtual const char* what() const throw();
じゃ、いいよ。ソースファイルでこれを定義し、この行を正確にコピーすると
virtual const char* what() const throw() {}
「仮想外部クラス宣言」のようなメッセージでコンパイルが失敗します。「仮想」を削除すると、正常にコンパイルされます。関数宣言のどの部分を定義で繰り返す必要があるかについての規則は何ですか? 静的?列をなして?どの部品が必要なのか簡潔に説明しているリファレンスはありますか?