基本機能を呼び出すための力派生クラス
-
19-09-2019 - |
質問
私は別の1からクラスを派生し、機能を上書きする場合は、
、私は、派生クラスでBase::myFunction()
の実装内myFunc
を呼び出すことにより、基本機能を呼び出すことができます。
However-基本機能はどのような場合に呼び出されたというのが私のBase
クラスで定義する方法は、また、それが上書きされた関数の中で明示的に呼び出さなくても、あるのでしょうか? (前または後のいずれかで実行導関数)
またはより良い、私は私の仮想Base
クラスの仮想関数を持っている、と2つのプライベート関数のbefore()
とafter()
を実施した場合、それはその前に、これBase
のいずれかの派生クラス内の関数の後Base
クラスで定義することが可能ですクラスが呼び出され、before()
とafter()
が呼ばれるのですか?
ありがとうございます。
解決
いいえ、これは不可能です。
しかし、あなたはそのような別の仮想関数を呼び出すことによって、それをシミュレートすることができます:
class Base
{
public:
void myFunc()
{
before();
doMyFunc();
after();
}
virtual void doMyFunc() = 0;
};
他のヒント
あなたはベースのメソッドをオーバーライド/過負荷派生クラスを防ぐためにしようとしています。あなたは「オーバーライドではない」(言語に依存)などのメソッドをマークすることによって、それを奨励することができますが、それを回避する方法が常にあります。
言い換えれば、あなただけの彼らにそれが使用されるべき方法を教えて、特定の方法で、あなたのクラスを使用するために誰かを強制することはできません。
C ++のために答え、あなたが継承された機能を持つことができません「目に見えない」あなたが望む方法で呼び出されます。
継承したクラスを介してダウンを呼び出すだけの方法はコンストラクタとデストラクタがあります。
所属していません StackOverflow