//默认复制构造函数的不足
//尽管有默认的复制构造函数来解决一般对象与对象之间的初始化问题, 但是在有些情况下我们必须手动显式的去定义复制构造函数, 例如:
#include <iostream>
using namespace std;
class Book
{
private:
char *book_name;
public:
Book(const char *name)//构造函数
{
cout << "构造函数分配内存" << endl;
book_name = new char[strlen(name) + 1];
strcpy(book_name, name);
}
//Book(const Book & book)
//{
//}
~Book() //析构函数
{
cout << "析构函数释放内存空间" << endl;
delete [] book_name;
}
void shoebook()
{
cout << "book_name : " << book_name << endl;
}
};
int main()
{
Book book("c++ primer plus");
Book book1(book);
book.shoebook();
book1.shoebook();
//总结缺点是析构函数会被执行两次,
//那么对同一块堆空间会被释放两次
return 0;
}
原文链接: https://www.cnblogs.com/xuyh/p/3204251.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/96680
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!