#include <cstdio> class Bar { public: Bar(){ puts("Bar()"); } Bar( const Bar & ){ puts("Bar(const Bar &)"); } ~Bar(){ puts("~Bar()"); } }; // no copy-constructor class class Foo { Bar bar1; }; int main() { Foo foo1; Foo foo2(foo1); return 0; }
クラス Foo は、リッチなメンバー bar1 を保持しているが、自身のコピーコンストラクタを持っていない。果たして Foo のコピー時にメンバー bar1 のコピーコンストラクタはちゃんと呼び出されるのか?
$ a.exe Bar() Bar(const Bar &) ~Bar() ~Bar()
呼ばれてるっぽい