Vincent__Gu 2016-03-15 16:14 采纳率: 100%
浏览 1809
已采纳

C++ primer 里面STL容器set的insert操作问题。。。

在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的指针的类型)?

  • 写回答

1条回答 默认 最新

  • 清泉流 2016-03-16 01:15
    关注

    &f就是Folder类型指针。至于Folder &f表示save的形参是引用,引用则只是变量的别名,表示的仍然是值。因此&f表示的是f的地址。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥50 汇编语言除法溢出问题
  • ¥65 C++实现删除N个数据列表共有的元素
  • ¥15 Visual Studio问题
  • ¥15 state显示变量是字符串形式,但是仍然红色,无法引用,并显示类型不匹配
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波