gpt4 book ai didi

c++ - static cast 和 new 的区别

转载 作者:行者123 更新时间:2023-11-28 07:53:57 26 4
gpt4 key购买 nike

我知道有两种动态分配内存的方法。我了解"new"的工作原理,但不了解“静态转换”的工作原理:

double* A1;
double** A2;

//1D array
A_1 = new double[size];

A_1 = static_cast <double*> (new double[c]);

//2D array
A_2 = reinterpret_cast <double**> (new double[r]);
for(i = 0; i < r; i++)
A_2[i] = static_cast <double*> (new double[c]);

我不明白 static 和 reinterpret 是如何工作的。

最佳答案

虽然 new 是用于分配新对象的关键字,但 static_cast 和 reinterpret_cast 有不同的用途,正如其他人现在指出的那样,不分配内存。

一个简短的解释是,static_cast 在指向兼容类的指针之间或在兼容的非指针类型之间进行转换。因此,您可以将 Vehicle 指针转换为 Car 指针或相反,但在运行时不会检查您的 Vehicle 在您转换时是否实际上是 Car。另一方面,dynamic_cast 具有运行时检查功能。

即使类型不兼容,reinterpret_cast 也会简单地转换指针。

您可以在大量资源中找到更深入的解释,例如 http://www.cplusplus.com/doc/tutorial/typecasting/

关于c++ - static cast 和 new 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13148352/

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