gpt4 book ai didi

C++ 静态和动态数组初始化

转载 作者:搜寻专家 更新时间:2023-10-31 00:30:31 24 4
gpt4 key购买 nike

让我们有以下代码:

#include <iostream>

struct TStruct{
int x;
int y;
int * ptr;

TStruct( void ) : x( 0 ), y( 0 ), ptr( nullptr ) { }
};

int main(){
TStruct arr[100];
TStruct * arr2 = new TStruct[200];

// some code working with these arrays

for( int i = 0; i < 100; i ++ )
if( arr[i] . ptr != nullptr )
delete [] arr[i] . ptr;
for( int i = 0; i < 200; i ++ )
if( arr2[i] . ptr != nullptr )
delete [] arr2[i] . ptr;
delete [] arr2;
return 0;
}

这两个数组(staticdynamic)的初始化是如何工作的?它们是由 TStruct 构造函数 自动初始化的,还是我必须通过循环它们并为每个 TStruct 成员设置值来手动初始化它们?

最佳答案

TStruct 构造函数将使用您显示的代码调用 300 次。为数组 arr 中的每个元素执行一百次,为 arr2 分配内存时为两百次。

对于数组 arr,编译器生成代码来调用构造函数,当您使用 new[] 时,运算符将确保调用构造函数。

关于C++ 静态和动态数组初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36705680/

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