C++中的重点内容
效率低下的原始方法
String fun()
{
String s("jiao");
return s;
}
int main()
{
String s1=fun();
return 0;
}
使用原方法,需要通过临时变量构造新的对象,在拷贝构造之后还需要撤销,带来了额外的损耗。
使用移动构建,就是把资源移动了,将原对象的东西移动到新对象上,将原对象的指向置空。解决拷贝构造代价大问题。
移动赋值与移动构建类似。
String(String&& s)//移动构建
{
str=s.str;
s.str=nullptr;
}
String& operator=(String&& s)//移动赋值
{
if(this!=&s)
{
delete[] str;
str=s.str;
s.str=nullptr;
}
return *this;
}
};