C++ 默认构造函数小记

#include <string>
#include <map>
using namespace std;

class A
{
public:
    A(string name):name_(name) {}    
    ~A()
    
private:
    string    name_;
};

int main()
{
    map<int, A>        map_;
    map_[1] = A("one_name");
    
    return 0;
}

上面这段代码执行的时候会报错,是什么错?应该怎么修改?
答:是由于A没有默认构造函数而报错,在执行到map_[1]处,会调用A的默认构造函数来构造一个A对象,然后将A("one_name")这个对象再复制给map_[1]这个对象
修改方法:
1. 给A添加一个默认的构造函数
2. 将map_[1] = A("one_name"); 改成 map_.insert(pair<int, A>(1, A("one_name")));

posted @ 2014-12-03 11:44  莫压枯枯地  阅读(215)  评论(0编辑  收藏  举报