在C++primer 5th 的13.4节里面有个类的定义是这样的:
class Message
{
friend void swap(Message&, Message&);
friend class Folder;
public:
//folders被隐式初始化为空集合
explicit Message(const string &str=""):contents(str){}
//拷贝控制成员,用来管理指向本Message的指针
Message(const Message&); //拷贝构造函数
Message& operator=(const Message&); //拷贝赋值运算符
~Message(); //析构函数
//从给定的Folder中添加/删除本Message
void save(Folder&);
void remove(Folder&);
//显示有几个Message对象
void show();
private:
string contents; //实际消息文本
set folders; //包含本Message的folder
//拷贝构造函数,拷贝赋值运算符合析构函数所使用的工具函数
//将本message添加到指向参数的folder中
void add_to_Folders(const Message&);
//从folders中的每个Folder中删除本Message
void remove_from_Folders();
//向folders添加和删除
void addFldr(Folder *f){folders.insert(f);}
void remFldr(Folder *f){folders.erase(f);}
};
其中的成员函数 void save(Folder&);定义为:
void Message::save(Folder &f)
{
folders.insert(&f); //将给定Folder添加到我们的Folder列表中
f.addMsg(this); //将本Message添加到f的Message中
}
请教下大神,folders不是set< Folder的指针> 类型么,为什么在函数里面folders可以insert像Folder& 的类型(不是应该insert像 Folder的指针的类型)?
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
C++ primer 里面STL容器set的insert操作问题。。。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 清泉流 2016-03-16 01:15关注
&f就是Folder类型指针。至于Folder &f表示save的形参是引用,引用则只是变量的别名,表示的仍然是值。因此&f表示的是f的地址。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 metadata提取的PDF元数据,如何转换为一个Excel
- ¥15 关于arduino编程toCharArray()函数的使用
- ¥100 vc++混合CEF采用CLR方式编译报错
- ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
- ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
- ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
- ¥50 如何openEuler 22.03上安装配置drbd
- ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
- ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
- ¥15 Windows11, backspace, enter, space键失灵