1

継承している抽象クラスがあります。明確にするために、私はすべての抽象メソッドを継承者に実装しました。

継承クラスから作成されたオブジェクトを使用した後、それを破棄しようとしますが、継承されたデストラクタを呼び出す代わりに、抽象メソッドに送信されます。

私のプログラムでは、次のようになります

class LinkedHash {

private:
      LinkedHashEntry **table;
      int max_size;
public:
      /* Creates a hashtable of size maxSize*/
      LinkedHash(int);
      LinkedHash(){}       
      /* deletes all members of the hashtable */
      virtual ~LinkedHash();

      virtual int hashFunction(int key) = 0;

      void insert(int key, Process* value);

      void remove(int  key);
      int getMaxSize(){return max_size;}
      LinkedHashEntry* search(int x);
};

class LinkedHashinheritor: public LinkedHash {

    public:
        LinkedHashinheritor():LinkedHash(1000){}
        int hashFunction(int key);
};

これは私のcppファイル関連コードです:

int LinkedHashinheritor::hashFunction(int key)
{
    return key%1000;
}

そして、関連するオブジェクトのコンストラクタとデストラクタの呼び出しがあります。

   Scheduler::Scheduler()
{tmp_lh=new LinkedHashinheritor();}

Scheduler::~Scheduler()
{
    delete tmp_lh;
}
4

2 に答える 2