在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的指针的类型)?
C++ primer 里面STL容器set的insert操作问题。。。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答
- 清泉流 2016-03-16 01:15关注
&f就是Folder类型指针。至于Folder &f表示save的形参是引用,引用则只是变量的别名,表示的仍然是值。因此&f表示的是f的地址。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?
- ¥100 求三轴之间相互配合画圆以及直线的算法
- ¥100 c语言,请帮蒟蒻写一个题的范例作参考
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发