copy构造函数的秘密
1.先来看这段代码:
MyString::MyString()
{
this->mstr = NULL;
}
MyString::MyString(MyString &str)
{
//用一个对象去初始化另一个对象
this->mstr = new char(strlen(str.mstr) + 1);
strcpy(this->mstr, str.mstr);
}
MyString::~MyString()
{
//if (this->mstr != NULL)
//{
// delete[] this->mstr;
//}
//this->mstr = NULL;
}
MyString& MyString::operator=(MyString &str)
{
/*if (this->mstr != NULL)
{
delete[] this->mstr;
}*/
this->mstr = new char(strlen(str.mstr) + 1);
strcpy(this->mstr, str.mstr);
return *this;
}
MyString MyString::operator+(MyString &str)
{
MyString mString;
mString.mstr = new char(strlen(this->mstr) + strlen(str.mstr) + 1);
strcpy(mString.mstr, this->mstr);
strcat(mString.mstr, str.mstr);
return mString;
}
void main()
{
...
str4 = str3 + str5;
getchar();
}
内容说明: 在”+“重载return的时候会出现一次匿名对象的创建和销毁,调用了copy构造函数来初始化这个匿名对象并且还会被析构释放。
最新文章
- Stack与Queue
- Crystal Reports 2008(水晶报表) 第一个报表
- HDU #3333
- Html、Css-----当有文字和图片的时候,需要文字和图片居中,怎么实现?不想文字换行怎么设置
- Sublime Text 2 配置及其使用
- 使用DBCC SHOW_STATISTICS展示索引的统计信息
- BZOJ1345: [Baltic2007]序列问题Sequence
- oracle数据库 ORA-12560: 协议适配器错误
- ZOJ 3741 Eternal Reality
- 初始WebApi 利用WebApi实现基础的CRUD
- 可兼容IE的jquery.cookie函数方法
- 【LeetCode】94. Binary Tree Inorder Traversal
- Android Studio JNI javah遇到的问题
- vue axios使用方法
- centos7内网源站建设
- [Luogu P1516]青蛙的约会
- linux新增动态库后可执行程序找不到的问题
- w3cscholl的在线代码编辑工具
- python内存泄漏,python垃圾手动回收,1
- 2017-2018-2 20165233 实验四 Android程序设计