0

对于以下基类、派生类和列表类,如何使用非默认构造函数 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

}
4

1 回答 1

0

您需要使用初始化列表。

class derive : public base
{
   public:
      derive(int size):base(size)
                   //  ^^^^^^^^^ invoking base class parameterized constructor
      {}
   .....
  1. 默认情况下,类成员是私有的。您需要对基础具有公共访问说明符并派生构造函数才能使上述内容起作用。
  2. 不要自己管理内存。请改用智能指针。在这种情况下,您不必担心释放资源。
  3. 什么是三法则?
于 2013-07-22T22:03:41.367 回答