クラス A のようなクラスのグローバル インスタンスを使用しています。a1; 現在、A& a2 = a1; として参照を使用して、このグローバル変数を他の関数で使用しています。ローカルで行われたすべての変更がグローバルに反映されるようにします。ローカルスコープが終了するとすぐに a2 のデストラクタが呼び出されるかどうかを確認したかっただけですか?
どうか明らかにしてください。
クラス A のようなクラスのグローバル インスタンスを使用しています。a1; 現在、A& a2 = a1; として参照を使用して、このグローバル変数を他の関数で使用しています。ローカルで行われたすべての変更がグローバルに反映されるようにします。ローカルスコープが終了するとすぐに a2 のデストラクタが呼び出されるかどうかを確認したかっただけですか?
どうか明らかにしてください。
a2 は参照であるため、デストラクタはありません。
a1 のデストラクタは、プログラムの終了時にのみ呼び出されます。a2 のローカル スコープが終了すると、正確に何が起こると予想されますか?
参照はポインターにすぎず、実際、多くのコンパイラーは内部で参照をポインターに変換します。ポインタにはデストラクタがないため、参照も行います。したがって、関数golbalオブジェクトa1の最後にそのまま残り、そのデスタクタはプログラムの最後にのみ呼び出されます。
ありがとうニラジ・ラティ