- 545 名前:デフォルトの名無しさん mailto:sage [2019/07/29(月) 23:57:29.36 ID:4SskHBFS.net]
- C++で質問です。
下記のソースコードで 「代入します」の表示の後、コンストラクタが呼ばれたのちすぐにデコンストラクタが呼ばれています。 H = 10 でコンストラクタが呼ばれるのはわかるのですが、なぜデコンストラクタが呼ばれているのでしょうか? また、Hogeクラスのコピーコンストラクタが呼ばれているようではないのに、なぜHインスタンスのメンバ変数Numの値が変更されているのでしょうか? -ソースコード class Hoge { public: Hoge(int n = 0) :Num(n) { printf("コンストラクタです\t%p\n", this); } Hoge(const Hoge& Obj) = delete; ~Hoge() { printf("デコンストラクタです\t%p\n", this); } int Num; }; int main(int argc, char **argv) { Hoge H = 5; printf("代入します\n"); H = 10; printf("表示します : %d\n", H.Num); printf("終了します\n"); } -実行結果 コンストラクタです 012FF9F0 代入します コンストラクタです 012FF924 デコンストラクタです 012FF924 表示します : 10 終了します デコンストラクタです 012FF9F0
|

|