Core List
1. 拷贝构造函数和赋值构造函数
(1) 拷贝构造函数
Customer::Customer(const Customer& rhs) : name(rhs.name) {}
(2) 赋值构造函数
Customer& Customer::operate= (const Customer& rhs) {
name = rhs.name;
return *this; // 见条款10
}
2. 遗忘部分成员赋值问题
(1) 当类中新增成员变量时,拷贝构造函数和赋值构造函数均需要同步
(2) 派生类的拷贝构造函数和赋值构造函数要确保基类部分成员的复制
PriorityCustomer::PriorityCustomer (const PriorityCustomer& rhs) : Customer(rhs), priority(rhs.priority); // 调用基类的拷贝构造函数
PriorityCustomer::operate= (const PriorityCustomer &rhs) {
Customer::operate= (rhs); // 调用基类的赋值构造函数来赋值基类成分
priority = rhs.priority;
return *this;
}
3. 拷贝构造函数和赋值构造函数的相互调用
(1) 调用拷贝构造函数来实现构赋值造函数 (构造一个已经存在的对象)// 错误
(2) 调用赋值构造函数来实现拷贝构造函数(在一个未初始化的对象身上,使用一个只对已初始化对象的操作)// 错误
注:不要尝试将拷贝构造函数和赋值构造函数进行互相调用。
本文详细解析了拷贝构造函数与赋值构造函数的定义及使用方法,并强调了在类成员发生变化时更新构造函数的重要性。同时,讨论了派生类中构造函数的正确调用方式以及避免构造函数间的不当互调。

被折叠的 条评论
为什么被折叠?



