【发布时间】:2013-03-06 12:23:09
【问题描述】:
我正在创建自定义类Node 以使用map<int,Node> 容器实现二叉树:映射的int 键是Node 对象的标识符。在Node 类中,我必须实现一个复制构造函数。
在地图上插入Node 对象时,我注意到Node 的复制构造函数被调用了两次。为什么?
cout << "node2" << endl;
Node node2;
node2.set_depth(2);
node2.make_it_branch(3,4);
cout << "map" << endl;
map<int,Node> mapping;
cout << "toInsert" << endl;
pair<int,Node> toInsert = pair<int,Node>(2,node2);
cout << "insert" << endl;
mapping.insert(toInsert);
运行上述代码,输出如下:
node2
--- Node()
map
toInsert
--- Node(const Node& orig)
insert
--- Node(const Node& orig) // Why does the copy constructor be invoked twice?
--- Node(const Node& orig) // ------------------------------------------------
--- ~Node()
--- ~Node()
--- ~Node()
--- ~Node()
【问题讨论】:
标签: c++ map copy-constructor