gpt4 book ai didi

c++ - 这两种在类中动态分配数组的方法有什么区别

转载 作者:太空宇宙 更新时间:2023-11-03 10:26:27 24 4
gpt4 key购买 nike

我正在尝试在一个类中动态分配一个数组。遇到一件很奇怪的事情。请查看这两段代码并告诉我它们的区别。

class A{

public:
int n;

int *a;

a = new int [4];

~A(){delete []a;}

A(){}
}

使用 GCC 编译会产生以下错误:

a does not a name type

但是当我使用时:

class A{

public:

int n;

int *a = new int [4];

A(){}
~A(){ delete []a;}
}

它编译

最佳答案

a= new int [4];

不是初始化而是赋值,是不允许的。

int *a = new int [4];

作为 in class initilization 工作并且在 C++11 及更高版本中是允许的。

您还混合了 new[]delete。每当您使用 new 时,您都应该调用 delete,而当您使用 new[] 时,您需要调用 delete[]

现在你应该使用 std::vector 而不是处理指针和 new[]delete[]相反。

关于c++ - 这两种在类中动态分配数组的方法有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32741210/

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