map使用笔记

 先上代码

 

 1 class T 
 2 {
 3 public:
 4     T()
 5         : _nval(20)
 6     {
 7         std::cout << "T::T()... \n";
 8     }
 9     ~T()
10     {
11         std::cout << "T::~T()...\n";
12     }
13 
14     int val() const 
15     {
16         return _nval;
17     }
18 
19 private:
20     int _nval;
21 };
22 
23 void test_map()
24 {
25     std::map<int ,T> key2val_mp;
26     
27     T t ;
28     t = key2val_mp[2];
29 
30     std::map<int, T>::const_iterator it = key2val_mp.begin();
31 
32     for (it ; it != key2val_mp.end(); ++it)
33     {
34         std::cout << "it->first = " << it->first << "\t" << "it->second.val() = " << it->second.val() << std::endl;
35     }
36     
37     std::cout << "Finished...\n";
38     
39 }
40 
41 int main(int argc, char* argv[])
42 {
43     test_map();
44 
45     return 0;
46 }

 

 

运行结果如下:

 

由上面的结果我们发现在test_map()函数中发生了两次构造,我们知道第一次构造是在:T  t;处

那么第二次的构造就应该是在  t = key2val_mp[2]处了,由此我们可以得出结论key2val_mp[2]返回了一个临时对象;

posted @ 2018-08-16 15:28  郭流水  阅读(134)  评论(0编辑  收藏  举报