生のポインターを含まないクラスに遭遇することはめったにありませんが、デフォルトのコピー コンストラクターでは十分ではありません。この例は、参照カウントされたオブジェクトがある場合です。boost::shared_ptr<> は例です。
誰かがこれについて詳しく説明できますか?を含むクラスがあるboost::shared_ptr
場合、クラスがコピーを構築するときにコピーが構築されないので、shared_ptr
コンストラクターは正しいことを行い、参照カウントを増やしませんか? たとえば、次のコードはInner
正しくコピーされshared_ptr
ます。
#include <iostream>
using namespace std;
class Inner
{
public:
Inner() { cout << "inner default constructed" << endl;}
Inner(const Inner& other) { cout << "inner properly copied" << endl;}
};
class Outer
{
Inner i;
};
int main() { Outer o; Outer p(o); return 0;}