標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

メンバーにポインタがなければ、コピーコンストラクタは要らないのか?

#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()

呼ばれてるっぽい