C/C++ゲーム製作総合スレッド Part2at GAMEDEVC/C++ゲーム製作総合スレッド Part2 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト300:名前は開発中のものです。 12/11/20 05:52:27.33 JIlX6vOn >>267 これ見てて思ったんだけど、 struct A と struct Bはそれぞれ非仮想の暗黙のデストラクタを持つじゃない。 すると std::vector<std::unique_ptr<A>> va(2) が破棄されるときには Aのデストラクタが呼ばれるよね。 #include <iostream> #include <memory> #include <utility> struct A{ int val; A(int i):val(i){}; }; struct C{ int dummy; }; struct B : private C,public A { // 多重継承を用いて vtbl の計算を複雑にする。 B(int i):A(i),C(){}; }; int main(int,char*[]){ std::unique_ptr<B> b( new B(10) ); std::cout << "\(^-^)/" << b->val << std::endl; std::unique_ptr<A> a(nullptr); a = std::move( b ); return 0; } (これは、わざと落ちるようstruct Cを入れて多重継承してみたんだけど、 問題はBのデストラクタは走らないよの部分) 暗黙のデストラクタって気にする? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch