c++在带参数的数组中分配和构造对象
C++ allocate and construct objects in array with parameters
从这里http://www.cplusplus.com/reference/new/operator%20new[]/,我不清楚是否有可能分配和构造带有参数的对象。这样的:
struct MyClass {
int data;
MyClass(int k) {}
};
int main () {
// allocates and constructs five objects:
MyClass * p1 = new MyClass[5](1); // allocate 5 objects, and init all with '1'
}
这行不通,但您可以使用std::vector<MyClass>
:
std::vector<MyClass> p1(5, 1);
这将创建一个包含5个MyClass
对象的向量。注意,这是有效的,因为您的单参数构造函数不是explicit
。如果是,则需要
std::vector<MyClass> p1(5, MyClass(1));
你写的不工作,但你可以这样做,因为c++ 11。
不过,最好避免动态分配,选择自动对象。
而且,大多数情况下您确实应该使用std::array
或std::vector
这样的标准容器。
MyClass * a = new MyClass[5]{1,1,1,1,1};
MyClass b[5] = {1,1,1,1,1};
std::vector<MyClass> c(5, 1);
std::vector<MyClass> d(5, MyClass(1));
std::array<MyClass,5> e{1,1,1,1,1};
相关文章:
- 使用操作重载对象重新分配对象
- 静态分配对象的值初始化
- C++ 将抽象类型的动态分配对象传递给函数并存储在向量中
- 堆分配对象中的堆栈对象在 c++ 中在哪里分配?
- 在 c++ 的构造函数中分配对象向量时出错
- 动态分配对象中的字段-动态分配更好还是静态分配更好?C++
- 操作后通过运算符分配对象
- 如何捕获源自静态分配对象的构造函数的异常?
- 在C++中,当重新分配对象时,为什么构造函数在析构函数之前触发?
- 如何使用每个对象的单个构造函数参数动态分配C++对象数组?
- 将动态分配对象传递到 boost::any 构造函数中
- 混合指向已分配对象和作用域对象的指针
- C 删除指向动态分配对象的指针
- 有关动态分配对象的问题
- 类的堆分配对象是否在其作用域之后但在 C++ 中调用其析构函数之前处于活动状态
- C++ 中的黑白堆分配对象和堆栈分配对象的性能差异
- 是隐式创建的默认构造函数,负责分配对象内存
- 如何删除用于动态分配对象的智能指针
- 分配对象数组时如何初始化每个对象
- 用于堆栈分配对象的C++虚拟析构函数内联