0

我知道动态分配内存的两种方法。我了解“新”是如何工作的,但我不明白“静态演员”是如何工作的:

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 是如何工作的。

4

1 回答 1

1

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

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

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

有很多资源可以找到更深入的解释,例如http://www.cplusplus.com/doc/tutorial/typecasting/

于 2012-10-30T22:53:03.623 回答