从derive类数组初始化基类非默认构造函数

时间:2013-07-22 21:29:58

标签: c++ arrays inheritance

对于以下的基础,派生和列表类,如何使用非默认构造函数base(int newsize)而不是默认构造函数base()初始化每个元素,以便我立即为列表中的每个元素创建正确的数组大小?

class base
{

    // default constructor
    base();

    // constructor to a newsize
    base(int newsize);


    int *array;
    int size;
};

class derive : public base
{

    int somethingelse;
};

class list
{

    // constructor to newlistsize element with newarraysize array
    list(int newlistsize, int newarraySize);

    derive *element;
    int listSize;
};


list::list(int newlistsize, int newarraySize)
{

    element = new derive [newlistsize];   
// how to initialize the array with newarraysize

}

1 个答案:

答案 0 :(得分:0)

您需要使用初始化列表。

class derive : public base
{
   public:
      derive(int size):base(size)
                   //  ^^^^^^^^^ invoking base class parameterized constructor
      {}
   .....
  1. 默认情况下,类成员是私有的。您需要具有基本的公共访问说明符,并派生构造函数以使上述工作。
  2. 不要自己管理记忆。请改用智能指针。在这种情况下,您不必担心释放资源。
  3. What is rule of three ?