#include <iostream> using namespace std; #define DEBUG(s) do { cerr << (s) << endl; } while(false); class Foo { private: int i; public: Foo(); ~Foo(); int value(); }; Foo::Foo() : i(100) { DEBUG("Foo::Foo()"); } Foo::~Foo() { DEBUG("Foo::~Foo()"); } int Foo::value() { return this->i; } int main() { Foo foo1; Foo foo2 = foo1; cout << foo1.value() << endl; cout << foo2.value() << endl; }
Foo::Foo()
100
100
Foo::~Foo()
Foo::~Foo()
えーっと…
- クラスオブジェクトを代入すると、メンバをコピー
- コンストラクタは呼ばれない
- ポインタはアドレスをコピーするのかなぁ?
- デストラクタは代入元/先で呼ばれる