移动构造函数应用的场景????
答:有时候我们会遇到这样一种情况,我们用对象a初始化对象b,后对象a我们就不在使用了,但是对象a的空间还在呀(在析构之前),既然拷贝构造函数,实际上就是把a对象的内容复制一份到b中,那么为什么我们不能直接使用a的空间呢?这样就避免了新的空间的分配,大大降低了构造的成本。这就是移动构造函数设计的初衷。
例子示下:
#include<string> #include<vector> using namespace std; class String; ostream& operator<<(ostream& out, String& s); class String { public: friend ostream& operator<<(ostream& out, String& s); public: String(const char* data = "") { if (data == NULL) { m_data = new char[1]; m_data[0] = '