静态铸造和新铸造之间的区别

时间:2012-10-30 22:14:32

标签: c++ memory pointers memory-management dynamic

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

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]);

我不明白静态和重新解释是如何起作用的。

1 个答案:

答案 0 :(得分:1)

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

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

reinterpret_cast只是转换指针,即使类型不兼容。

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