智能指针实现Impl模式

widget.h:

class Widget
{ 
public:
	Widget();
	~Widget();
	// ... other funcs
	Widget(const Widget& rhs); /
	Widget& operator=(const Widget& rhs); 
	
private: 
	struct Impl;
	std::unique_ptr<Impl> pImpl;
};

widget.cpp:

struct Widget::Impl
{
	std::string name; 
	std::vector<double> data; 
	Gadget g1,g2,g3;
};

Widget::Widget() : pImpl(std::make_unique<Impl>())
{}

Widget::~Widget(){}  // or Widget::~Widget()=default;

Widget::Widget(Widget&& rhs) = default;
Widget& Widget::operator=(Widget&& rhs) = default;
上一篇:洛谷P4383 [八省联考2018]林克卡特树lct(DP凸优化/wqs二分)


下一篇:2、构造/析构/赋值运算