だから、私はこのポリモーフィック階層を持っています:
ClassA
Is not abstract, no pure virtual functions, but a few virtual functions
ClassB:public ClassA
Defines an extended interface for a certain type of subclass;
is abstract with pure virtual functions
ClassC:public ClassB
Usable class, no more subclassing
これが取り引きです。 と のオブジェクトを一緒ClassA
にClassC
コンテナーに入れ、反復処理します。この反復を実行するには、非純粋仮想関数が存在しますが、空であり、 ;ClassA
だけです。{}
つまり、それは空であり、反復ClassC
が呼び出される場合にのみ使用可能になり、それ以外の場合は何もしません。純粋にすることはできません。そうしないと、のオブジェクトを持つことができませんClassA
。
しかしClassC
、実際にその関数を実装し、そのクラスのユーザーに強制的に実装させるために、私はこの関数を .NET で純粋仮想化しClassB
ます。
これは受け入れられますか?純粋ではない仮想関数を取得し、それを純粋にしてから、再び非純粋にすると、何も「壊れる」ことはありClassC
ませんか?