带数组的实例对象

时间:2015-04-22 15:26:14

标签: c++ arrays class constructor instance

我在c ++中工作的课程如下:

class foo {
int a ;
    foo (){
      a = rand();
    } 
    foo(int b){ a=b }
 };
 int main(){
   foo * array = new foo[10]; //i want to call constructor foo(int b)
  // foo * array = new foo(4)[10]; ????
 }

请帮助,谢谢:D

1 个答案:

答案 0 :(得分:1)

首先应该更正语法(放置;,使构造函数public等)。然后,您可以在C ++ 11中使用统一初始化,如

#include <iostream>

class foo {
public:
    int a;
    foo () {
    }
    foo(int b) { a = b; }
};
int main() 
{
    foo * array = new foo[10] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    std::cout << array[2].a << std::endl; // ok, displays 2
    delete[] array;
}

您应该尝试完全避免使用原始数组,使用std::vector(或std::array)或任何其他标准容器。例如:

std::vector<foo> v{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};

std::vector v(10, 4); // 10 elements, all initialized with 4

无需记住删除内存等。