我定义了一个类student 然后想定义一个类数组student students【10】。但是结果是不可以会出问题 ,网上查了是和构造函数有关?我不是很懂,想请教一下大家如何在c++中定义类数组,谢谢~
例如
#include <iostream>
using namespace std;
class Student
{
public:
int value;
int score;
};
int main()
{
Student *students = new Student[10];
students[0].value = 10;
students[0].score = 100;
cout << students[0].value << " " << students[0].score << endl; // 输出 10 100
return 0;
}
如果要定义类对象数组,如果你重写了一个带参数的构造函数,那么你必须再为类提供一个无参的构造函数,如下代码:
#include<iostream>
using namespace std;
class A
{
private:
int a;
public:
A(int a):a(a)
{
}
A() {}
};
int main()
{
A a[5];
A * b = new A[5];
}
没问题
student students[10]
students[0] = student(...构造函数的参数)
...
如果没有默认构造函数,就得用allocator了,c++11的新特性,搜一搜就行
简单来说new的时候是分配空间和调用默认构造函数一起进行,你现在没默认构造函数
allocator是分配空间和构造分步进行,不一定非要默认构造函数