0

メモリを動的に割り当てる 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]);

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 に答える