我的测试代码
#include <iostream>
class Test {
private:
int a, b;
public:
Test();
Test(int a);
inline int getA();
inline int getB();
};
Test::Test() : a(0), b(0) {}
Test::Test(int a) : a(a), b(0) {}
inline int Test::getA() {
return a;
}
inline int Test::getB() {
return b;
}
int main() {
Test* test = new Test(3)[2];
Test* test2 = new Test[2];
for(int a = 0; a < 2; ++a) {
std::cout << "test[" << a << "] = " << test[a].getA() << std::endl;
std::cout << "test2[" << a << "] = " << test2[a].getA() << std::endl;
}
delete[] test;
delete[] test2;
return 0;
}
重要的部分是
Test* test = new Test(3)[2];
给出错误:main.cpp:26:29:错误:预期&#39;,&#39;或&#39;;&#39;之前&#39; [&#39;令牌
如果我写了
Test* test = new Test(3);
它会运行正常(如果我继续使用 - &gt;然后在代码中删除,当然)。使用new []调用重载构造函数有不同的语法,还是不可能?
答案 0 :(得分:1)
您可以像这样初始化数组:
Test* test = new Test[2]{3, 3};
请注意,您必须为长度为N的数组写入N 3。