下面的一小段儿代码,我不知道为什么它的执行逻辑是什么?
代码如下:程序代码:
#include <iostream> #include <cassert> #include <vector> using namespace std; clase U{ public: long id; long generation; static long total_copies; U():id(0){} U(long n):id(n),generation(0){} U(const U& z): id(z.id),generation(z.generation+1){++total_copies;} }; long U::total_copies = 0; int main() { vector<U> vector(3); for(int i=0;i<3;i++) cout<<vector[i].generation<<endl; cout<<U::total_copies<<endl; return 0; }
输出结果:
1
1
1
3
问题来了,为什么会调用第三个拷贝构造函数? 求帮忙分析,不胜感激呢。
[ 本帖最后由 纯黑色 于 2014-1-21 22:17 编辑 ]