复制构造函数发生时间1.类作为函数参数
2.函数返回值
3.对已经定义的对象进行赋值操作
复制构造函数做了什么1.内置类型,直接赋值(指针除外,以下有特殊说明)
2.类类型,调用该类的复制构造函数
3.指针类型,只赋值指针中的地址,不赋值指针指向的对象,即所谓的浅拷贝,我们实际上需要的是深拷贝(这是一般要重写复制构造函数的主要原因,我认为是唯一原因)
一些技巧1.要禁止赋值,显式的把赋值构造函数声明为private,同时不定义即可
2.复制构造函数最困难的部分在于认识到他的必要性
示例,string的拷贝构造函数:
String::String(const String &other)
{
// 允许操作other的私有成员m_data
int length = strlen(other.m_data);
m_data = new char[length+1];
strcpy(m_data, other.m_data);
}
个人建议,看看《高质量C++编程》相关部分,收获颇丰。