式を (void) にキャストすると、基本的にコンパイラーはその式の結果を (計算後に) 無視するように指示されます。
あなたの例では、各式 (ステートメント/行ごと) が new 演算子を介して動的にメモリを割り当てています。また、new はメモリへのポインター (アドレス) を返すため、通常の方法は、そのポインターを変数に格納することです。最終的にオブジェクトを削除し、メモリの割り当てを解除するために使用します。あなたの例では、ポインターが破棄されているため、 (void) への明示的なキャストにより、プログラマーの意図が明確になります。
技術に興味がある場合 (C++ 標準の第 5 節から引用):
どの式も cv void 型に明示的に変換できます。式の値は破棄されます。[注: ただし、値が一時変数 (12.2) にある場合、その変数のデストラクタは通常の時間まで実行されず、変数の値はデストラクタを実行する目的で保持されます。--end note ]
左辺値から右辺値 (4.1)、配列からポインター (4.2)、および関数からポインター (4.3) への標準変換は、式には適用されません。
これらのオブジェクトがどのように削除されているのか (実際に削除されている場合) を疑問に思っている場合、答えは、QShortcut のコンストラクター内の「this」ポインターは、new によって返される値と同じ値を持つ必要があり、それを渡すことができるということです。 ShortcutManager に。コンストラクター内の「this」は、QShortcut のコンストラクターに渡される「this」ポインターと同じではないことに注意してください。