したがって、さまざまなオンラインソースから、コンストラクター内から仮想関数を呼び出すことは一般的にノーノーであることがわかっています。ここでの問題は、基本クラスが最初に構築され、C++が最初に基本クラスのバージョンの関数を呼び出すことです。ただし、これで問題ない可能性のある独自のユースケースがあります。コメントをいただければ幸いです。この状況を考えてみましょう。
class Base
{
public:
Base(string data)
{
Parse(data);
}
~Base(){}
private:
virtual Parse(string data);
}
class Derived : public Base
{
public:
Derived(string data)
{
Parse(data);
}
~Derived();
private:
Parse(string data);
}
このような設定があり、各派生クラスの予想される動作は次のとおりであるとしましょう。
- 基本クラスでParseが呼び出され、これらすべての入力文字列に共通するものを解析します。
- 派生解析では、派生クラスに固有のデータを取得する必要があります。
この場合、コンストラクターで仮想関数を使用するのは理にかなっていますか?または、このクラスを作成するたびに「解析」を公開して呼び出す必要がありますか?または他の提案があります。
これが理にかなっていることを願っています。上記の構文エラーはご容赦ください。私は一般的な考え方を表現しようとしています。