将一个局部变量存储在类安全的STL容器中吗?

时间:2012-07-08 03:34:34

标签: c++ variables stl map containers

class MyMap : std::map<char, pro::image>
{
public:
     void MyMethod(char x);
     /** code **/
}

void MyMap::MyMethod(char x)
{
     pro::image my_img; // note that my_img is a local variable
     my_img.LoadFromFile("my_image.png");

     this->insert(std::pair<char, pro::image>(x, my_img)); // stored in the class
}

现在,这段代码安全吗?基本上,当MyMap my_img时,insert会存储副本,还是会存储引用

1 个答案:

答案 0 :(得分:5)

它会存储一份副本。

但是,你真的需要继承吗?你应该让std::map成为一个班级成员。

class MyMap
{
    std::map<car, pro::image> map_;
public:
     void MyMethod(char x);
     /** code **/
};

void MyMap::MyMethod(char x)
{
     pro::image my_img; // note that my_img is a local variable
     my_img.LoadFromFile("my_image.png");

     map_.insert(std::pair<char, pro::image>(x, my_img)); // stored in the class
}