質問: 0 があるのが何故なのか理解できません。 これはどういった意味があるのでしょうか? また、24-26行目の class ~~; はクラスの継承でしょうか?
回答: こんにちは。 > > のように関数定義の後ろに = 0 があるのが何故なのか理解できません。 > > これはどういった意味があるのでしょうか? > > > 「純粋仮想関数」という意味です。 仮想関数は一般に派生クラスでも定義されます。派生クラスで定義しなければ基底クラスのものが使われます。 しかし、「純粋仮想関数」は「基底クラスでは意図的に定義しないから派生クラスで必ず定義するように」との意味になります。 更に、「純粋仮想関数」を持つクラスは生成することが出来ないという効果もあります。これを「抽象クラス」と呼びます。抽象クラスは派生して派生クラスを生成して使います。 > > また、24-26行目の class ~~; はクラスの継承でしょうか? > > > 継承ではないです。コンパイラにそのようなクラスがあることを教えているだけです。この宣言があれば`MtpDataPacket* pointer;`のようなことをしても未定義シンボルになることなくコンパイルできます。 もしも、この宣言が無い場合、MtpDataPacketと言うシンボルがクラスなのか関数なのかenum型なのか、変数なのかなどコンパイラは判断できません。 その結果、`MtpDataPacket* pointer;`の記述を解釈して処理できなくなるのです。