2012年3月11日星期日

拷贝构造

一天同事考我一个C++的问题,关于STL容器的拷贝构造。
回来写了段代码验证了一下
    struct Foo
    {   
        std::vector<int> v_;
    };
    Foo a, b;
    a.v_.push_back(9);
    b = a;
    printf("%d %d %d %d\n", a.v_.size(), b.v_.size(), a.v_[0], b.v_[0]);
    a.v_[0] = 8;
    printf("%d %d %d %d\n", a.v_.size(), b.v_.size(), a.v_[0], b.v_[0]);
结果
1 1 9 9
1 1 8 9

2 条评论:

Unknown 说...

呵呵,这个是默认的operator = 吧~

Unknown 说...

http://codinn.com/projects/google-cpp-styleguide/view/classes.html#id2


优点:
拷贝构造函数使得拷贝对象更加容易. STL 容器要求所有内容可拷贝, 可赋值.