拷贝构造:
拷贝构造又称复制构造,是一种特殊的构造函数,负责用一个现有的对象构造一个新的对象,只有一个引用型的参数(对象本身)。
类名(类& )
{
}
拷贝函数的参数应该加const保护,但编译器没有强制要求。
编译器会自动生成一个拷贝构造,负责把旧对象中所有的数据拷贝给另一个新创建的对象。
浅拷贝与深拷贝的区别:
如果类成员中有指针,浅拷贝只拷贝指针的值,而深拷贝拷贝指针变量所指向的目标。
什么时候需要实现拷贝构造:
当类中有指针成员时,缺省的拷贝构造就无法完成拷贝(浅拷贝),就需要自己实现一个拷贝构造(深拷贝)。
什么情况会调用拷贝构造:
1、使用现有的对象创建新的对象时
User userNew = userOld;
2、当把对象作为函数的参数时,调用函数时就会调用拷贝构造。(使用引用就不会调用拷贝构造)
赋值构造(赋值运算符)
当用一类现有的对象给另一个现有的类对象赋值时,就会调用赋值构造
void operator = (类& )
{
}
编译器会自动生成缺省的赋值构造,负责把现有对象中所有的数据拷贝给另一个现有的的对象。
什么时候需要实现赋值构造:
当需要深拷贝时,需要实现一个赋值构造,也就是赋值构造与拷贝构造需要同时实现。
编译器会自动生成四个成员函数:构造、析构、赋值构造、拷贝构造。