C++基础知识??类的复制控制
作者:网络转载 发布时间:[ 2013/4/27 9:55:45 ] 推荐标签:
2、重载赋值操作符
赋值操作符以this(隐藏)和同类型对象的const引用作为形参。返回对同类型的引用。通常一个类定义复制构造函数的同时需要定义赋值操作符。
a、在赋值之前,需要释放当前对象的资源,否则会形成内存泄露;又因为如此,在这之前需要判断传入的参数和当前对象是否是同一个实例,否则delete时会造成严重错误。
String& String::operator=(const String& other)
{
if(this == &other)
{
return *this;
}
delete[] m_data;
int length = strlen(other.m_data);
m_data = new char[lenght+1];
if(m_data != NULL)
{
strcpy(m_data,other.m_data);
}
return *this;
}
//可能有更好更安全的实现,以后再说
3、析构函数
a、销对象时会调用析构函数。对于动态分配的对象,只有指向该对象的指针被删除时才撤销。析构函数通常释放在构造函数或在对象生命周期内获取的资源;
b、默认析构函数(编译器总会生成),它按成员在类中声明的次序的逆序撤销成员(非static)。但默认析构函数不删除指针指向的对象;
c、析构函数没有返回值,没有形参,所以不能重载它。
String::~String()
{
delete [] mdata;
}
后记:通常这三个复制控制成员中我们定义一个,则它也需要定义另外两个 ,即所谓的“rule of three”。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11