![](/img/trans.png)
[英]how can i initialize a dynamically allocated array of characters so i don't get those weird characters?
[英]How can I initialize objects in a dynamically allocated array with some arguments
我想知道如何使用一些参数来初始化动态分配的数组中的每个对象。
我知道如何使用默认构造函数初始化动态分配的数组中的所有对象。
例如,假设有一个名为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。
如果仍然要使用数组,则可以使用
Circle *arr = new Circle[5]{10};
它将第一个半径初始化为10,其他使用默认值。
样本输出为:
radius : 10
radius : 0
radius : 0
radius : 0
radius : 0
deleted
deleted
deleted
deleted
deleted
如果您需要单行解决方案,则可以使用以下脏行:
Circle *arr = new Circle[5]{10,10,10,10,10};
我解决了这个问题。
我想知道是否可以通过使用数组来实现这些工作。
但是我发现我可以通过使用std :: vector来做到这一点
vector<Circle> arr(num,Circle(radius))
然后,构造函数Circle(int r)
仅被调用一次
复制构造函数Circle(Circle& c)
被多次调用。
谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.