gpt4 book ai didi

c++ - 为什么 C++ 构造函数必须对数组使用动态分配?

转载 作者:太空狗 更新时间:2023-10-29 23:25:52 25 4
gpt4 key购买 nike

在我的类(class)笔记中给出了这两个例子。显然第一个是不允许的,我不能在堆栈上分配是否有技术原因?或者这是 C++ 标准?

   // Constructor may force dynamic allocation when initializating an array of objects.

Complex ac[10]; // complex array initialized to 0.0
for ( int i = 0; i < 10; i += 1 ) {
ac[i] = (Complex){ i, 2.0 } // disallowed
}


// MUST USE DYNAMIC ALLOCATION
Complex *ap[10]; // array of complex pointers
for ( int i = 0; i < 10; i += 1 ) {
ap[i] = new Complex( i, 2.0 ); // allowed
}

最佳答案

第一个语法无效。但是假设您的 Complex 类有一个公共(public)的复制赋值运算符(隐式的应该没问题),那么下面的应该没问题:

Complex ac[10];             // complex array initialized to 0.0
for ( int i = 0; i < 10; i += 1 ) {
ac[i] = Complex( i, 2.0 );
}

关于c++ - 为什么 C++ 构造函数必须对数组使用动态分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6733683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com