【发布时间】:2019-05-14 14:08:38
【问题描述】:
我想知道如何用一些参数初始化动态分配的数组中的每个对象。
我知道如何使用默认构造函数初始化动态分配数组中的所有对象。
例如,假设有一个名为 Circle 的类,它有一个名为 radius 的成员变量。 我知道
Circle *arr=new Circle[5]
表示 Circle 对象由默认构造函数构造。
但是我怎样才能做这样的工作呢? (虽然这不起作用。)
Circle *arr=new Circle[5](10)
以下是您可以参考的全部代码。
#include <iostream>
using namespace std;
class Circle
{
private:
int radius;
public:
Circle(int r)
{
cout << "radius : " << r << endl;
this->radius = r;
}
Circle()
{
cout << "radius : 0" << endl;
this->radius = 0;
}
~Circle()
{
cout << "deleted" << endl;
}
};
int main()
{
Circle *arr = new Circle[5];
// Here, What I want is something like this
// Circle *arr = new Circle[5](10) //10 would be an argument meaning radius
delete[] arr;
system("pause");
}
【问题讨论】:
-
使用
std::vector。 -
std::vector<Circle> arr(5, 10)将完成这项工作,无需显式使用动态内存分配。 -
谢谢。我知道向量,但只是想知道数组是否可以实现这些工作。非常感谢!!
-
为什么不想使用默认的构造函数?默认构造函数是默认构造一个对象的构造函数,所以如果你希望默认构造的对象有一些默认值,那就是放置它们的地方
-
我担心用户输入数据时的某些情况。
标签: c++