6

だから、私はこのポリモーフィック階層を持っています:

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

これが取り引きです。 と のオブジェクトを一緒ClassAClassCコンテナーに入れ、反復処理します。この反復を実行するには、非純粋仮想関数が存在しますが、空であり、 ;ClassAだけです。{}つまり、それは空であり、反復ClassCが呼び出される場合にのみ使用可能になり、それ以外の場合は何もしません。純粋にすることはできません。そうしないと、のオブジェクトを持つことができませんClassA

しかしClassC、実際にその関数を実装し、そのクラスのユーザーに強制的に実装させるために、私はこの関数を .NET で純粋仮想化しClassBます。

これは受け入れられますか?純粋ではない仮想関数を取得し、それを純粋にしてから、再び非純粋にすると、何も「壊れる」ことはありClassCませんか?

4

2 に答える 2