ここでの初心者の疑いのようなもの(私からの別のもの:P)
私が読んでいる本について:
- 1つのAbstractBase-Class(ABC)は、純粋仮想メソッドの宣言によるものです。
- メソッドを純粋仮想メソッドにする
= 0
のは、宣言の最後にあります。 - 次のように宣言でき
virtual void f() = 0;
ます。この方法では、ABCで定義する必要はありませんが、派生クラスが独自のバージョンを実装する必要があります。 - ただし、次のように仮想メソッドを宣言することもできます。
void f() = 0;
この方法では、ABCでメソッドを定義する必要があり、派生クラスはそのように使用できます。このアプローチは、メソッドがすべてその派生クラスによって一般的に適用されるABCに必要です。
上記のすべての点が当てはまる場合、私が理解していないのは、次のとおりです。正確に仮想メソッドとは何ですか。
void f() = 0;
私には通常の方法のように見えるからです。ABCはそれを定義し、派生オブジェクトは他のパブリックメソッドと同じようにABCの定義を使用します。これらの2つのインスタンスに魅力的な仮想メソッドの定義はありますか?
純粋仮想関数または純粋仮想メソッドは、抽象ではない派生クラスによって実装する必要がある仮想関数です。
この定義は、このサイトの別の質問から選択されています。だから私の推測は私が読んでいる本が間違っているのですか?void f() = 0;
クラスはABCであると述べていますが、純粋仮想メソッドではありません。誰かがこれを確認したり、私に説明したりできますか?