最近帮我同学做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