构造数组

时间:2014-01-19 15:46:16

标签: c++ class constructor new-operator

如何在operator new[]中调用特定的类构造函数?

#include <iostream>

class foo
{
  public:
    foo(){std::cout << "\nfoo::foo()\n";}
    foo(int param){std::cout << "\nfoo::foo(int)\n";}
};

int main()
{
  foo* my_array = new foo[45];
  return 0;
}

foo* my_array = new foo[45];会调用foo()构造函数。如何调用foo(int)构造函数?

1 个答案:

答案 0 :(得分:4)

原始数组无法执行此操作。你可以用std :: vectors'获得类似的结果 explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type());

std::vector<foo> my_vector(45, 10);

将创建包含45个foo个对象的向量,每个对象都是通过foo(10)构造函数调用创建的。