最近帮我同学做360 笔试题, 其中有一个题有点意思,模仿的 mlloc和free的功能,我读过 其中的源码,所以当时还是有思路的。然后就写了。写的过程中遇见一个编译问题,只怪c++基础不好,连这种问题能犯: 简化一下
class A{
private:
int val;
public :
A(int v):val(v){}
};
int main(){
map<int,A>m;
m[1] = A(1);
}
然后报错,找不到 参数为0的constructor 这个问题 困扰了我好几。 然后去 stack overflow 上问, 大致明白了。下面是链接:
http://stackoverflow.com/questions/39452064/c-subscript-operator-about-map
然后为了更加深入的理解这个问题
如下代码
class A{
public :
int val;
public :
A(){
cout << "default constructor" <<endl; val = 10;
printf("%p\n",this);
}
A(int v):val(v){
cout << "user_defined" << endl;
printf("%p\n",this);
}
A(const A& tmp){
cout << "A copy constructor val is" << tmp.val<<endl ;
printf("cp %p to %p\n",&tmp,this);
this->val = tmp.val;
}
A& operator= (const A& tmp){
co

本文探讨了在解决360笔试题时遇到的C++ map插入问题,涉及到了map的插入机制。通过一个编程实例,分析了在插入过程中可能存在的多次拷贝构造函数调用,并猜测这是由于参数传递在栈上而map存储在堆上导致的。作者邀请读者分享更多关于这一过程的细节,以共同学习进步。
最低0.47元/天 解锁文章
1374

被折叠的 条评论
为什么被折叠?



