类 有默认拷贝构造函数及默认的赋值函数吗
答案:2 悬赏:0 手机版
解决时间 2021-03-23 11:06
- 提问者网友:浪荡绅士
- 2021-03-23 04:08
类 有默认拷贝构造函数及默认的赋值函数吗
最佳答案
- 五星知识达人网友:不如潦草
- 2021-03-23 04:41
如果没有显式定义拷贝构造函数,则编译系统会自动提供一个默认的拷贝构造函数,但其作用只是简单地复制类中每个数据成员,赋值函数不清楚。
全部回答
- 1楼网友:woshuo
- 2021-03-23 05:42
默认构造函数
string::string()
{
m_data = new char[1];
*m_data = '\0';
}
自定义构造函数
string::string(const char *str)
{
if(null ==str )
{
m_data = new char[1];
*m_data = '\0';
}
else
{
ilen = strlen(str);
m_data = new char[ilen +1];
strcpy(m_data, str);
}
}
拷贝构造函数
string::string(const string &other)
{
int ilen = strlen(other.m_data);
m_data = new char[ilen + 1];
strcpy(m_data, other.m_data);
}
析构函数
string::~string()
{
delete []m_data;
}
重载赋值运算符函数
string &string::operator=(const string &other)
{
if(this == &other)//自检查,防止自己赋值给自己
{
return *this;
}
delete []m_data;//删除原来的内存资源
ilen = strlen(other.m_data);
m_data = new char[ilen +1];
strcpy(m_data, other.m_data);
return *this;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯