C++ Primer 第十三章 13.4 拷贝控制示例 练习和总结

本文深入探讨了C++ Primer第13章13.4节中的拷贝控制示例,重点分析了练习13.33至13.38的问题。内容包括理解拷贝控制中形参类型的设定、对象拷贝初始化的影响、函数设计的考量以及swap在拷贝控制中的应用。通过这些练习,读者能更深刻地理解C++中拷贝构造函数和赋值操作符的工作原理。
摘要由CSDN通过智能技术生成

13.4 拷贝控制示例

练习
13.33

因为如果形参类型是const Folder&,那边形参是一个常量。
那么folders的类型必须是常量指针。
那么调用的Folder的AddMsg和remMsg就必须是常量函数。
而这两个函数肯定会修改Folder中数据成员的值,因此不能被设置为常量函数。

所以只能讲save和remove的形参定义为非const类型。

13.34
class Message {
   
	friend class Folder;
public:
	friend void swap(Message& lhs, Message& rhs);
	Message(const string& str = "") :contents(str) {
   };
	Message(const Message&);
	Message& operator=(const Message&);
	~Message();
	void save(Folder&);
	void remove(Folder&);
private:
	string contents;
	set<Folder*> folders;
	void add_to_Folders(const Message& m);
	void remove_from_Folders();
};
void Message::save(Folder& f) {
   
	folders.insert(&f);
	f.addMsg(this);
}
void Message::remove(Folder&f) {
   
	folders.erase(&f);
	f.remMsg(this);
}
void Message::
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值