0

簡単なコードを書いています。

class A
 {
   public:
   virtual func ()
    { // allocate memory 
    }
 };

class B : public A
 {
   public:
   func ()
    { // some piece of code
      // but call base class same function Ist 
    }
 }

 main()
    {
      A *ptr = new B;
      ptr->func () //here I want to call base class function first 
                   //and then derived class function
                   // How to implement ??
    }
  1. 最初に基本クラス関数を呼び出してから、派生クラスから同じ関数を呼び出す方法??。各関数を明示的に呼び出したくはありません。派生クラス関数を呼び出すだけで、基本クラス関数が自動的に呼び出されます。

  2. コンストラクターがこれらの関数を呼び出さないようにします。

  3. これを実装する方法はありますか、それともこれはすべてゴミです。

4

3 に答える 3

4

の実装で親クラスのメソッドを呼び出しfuncます (明示的に行う必要があります) B

class B: public A
{
    public:
    func()
    {
        A::func();
        ...
    }
}
于 2012-09-03T12:58:53.783 に答える
1

A::func()明示的に呼び出すことができます。

class B : public A
 {
  public:
   void func ()
    {
      A::func(); // call base class func()
      // some more code 
    }
 }
于 2012-09-03T12:58:45.637 に答える
1

それが自動的に起こるように手配することはできません。派生クラスのオーバーライドから基本クラスの関数を呼び出す必要があります。

void B::func() {
    A::func(); 
    // then do something else
}
于 2012-09-03T12:59:41.087 に答える