別のデータ型の変数を参照する別のデータ型の参照を作成することは可能ですか?
LPWSTR Buffer = new WCHAR[BUFFER_LEN];
LPBYTE& rfBuffer = (LPBYTE&) Buffer;
//Compiles but rfBuffer is BAD
はい。この構文は、変数が使用するメモリを、変数がそこにあるかのようT x = (T&)y
に扱うようにコンパイラに指示します。しかし、それは言葉の乱用にすぎません。y
T
参照は暗黙のポインターです。これらは元のオブジェクトのアドレスを保持しますが、構文的にはオブジェクト自体として動作します。このMSDNの記事によると:アドレスを特定のポインター型に変換できるオブジェクトは、類似の参照型にも変換できます