我知道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]);
我不明白静态和重新解释是如何起作用的。
答案 0 :(得分:1)
虽然new是分配新对象的关键字,但static_cast和reinterpret_cast有不同的用途,正如其他人现在指出的那样,不要分配内存。
一个简短的解释是static_cast在指向兼容类的指针之间或兼容的非指针类型之间进行转换。因此,您可以将车辆指针转换为Car指针或反过来,但是在运行时没有检查您的Vehicle在投射时实际上是Car。另一方面,dynamic_cast具有运行时检查功能。
reinterpret_cast只是转换指针,即使类型不兼容。
有很多资源可以让您找到更深入的解释,例如http://www.cplusplus.com/doc/tutorial/typecasting/