您很少会遇到不包含原始指针但默认复制构造函数不够用的类。一个例子是当你有一个引用计数的对象时。boost::shared_ptr<> 就是例子。
有人可以详细说明一下吗?如果我们有一个包含 a 的类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;}