【博客2】c++手动实现string类
记录下春招的时候让手动string类的几个默认函数,最近复习了primer,就顺便补上移动构造吧
代码如下:
这里测试并分析下下移动构造函数:
测试代码:
测试结果:
分析:
使用s1来移动构造s2,后,s1的资源转移到了s2,s2享有s1资源的所有权。
建议:
1.使用c++11的move可以将一个左值转换为一个右值,从而触发移动构造函数,使用移动构造函数,可以直接将一个将亡值的资源进行转换所有权,此时新对象不用再去申请资源,旧对象也不用释放资源,提高效率。
2.但是要注意,移动构造后原来的对象就不在享有对资源的所有权了,要避免他被使用。
3.当类中有成员的内存是采取在堆上的动态分配而来的,为这个类实现移动构造函数。
4.同时推荐在STL中使用emplace_back来代替push_back
大三学生一枚,文章均非抄袭或者模仿,均为原创,仅代表个人观点,如果文章有错误的地方,欢迎在下方提出,每条评论我都会去认真看并回复,同时感谢指正的前辈。