84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
ご協力ありがとうございます。
你对引用的理解有错啊getTestData(testMap, 1, tempData1);这条语句并不能使tempData1变成对testMap[1]的引用,这个函数只是让函数中所有对data的操作同样反映到tempDada1上,所以是data变成了tempData1的引用。而你的tempdata1根本没有引用testMap里面的任何元素,所以改变了tempdata1不会有啥效果的。
在getTestData函数里面,你的赋值语句data=it-<second;会调用类的拷贝构造函数。因为你没有写,所以调用的是默认拷贝构造函数。也就是说你的这个赋值,并没有将等号右边的对象绑定给左边的对象,而是发生了拷贝。所以你对teatData1的改变,是不会改变原始对象的。
解决办法就是重写拷贝构造函数,让他返回原始对象。还有就是可以使用指针的方式。
把getTestData改成setTestData,用data给it->second赋值
你对引用的理解有错啊
getTestData(testMap, 1, tempData1);
这条语句并不能使tempData1变成对testMap[1]的引用,这个函数只是让函数中所有对data的操作同样反映到tempDada1上,所以是data变成了tempData1的引用。而你的tempdata1根本没有引用testMap里面的任何元素,所以改变了tempdata1不会有啥效果的。
在getTestData函数里面,你的赋值语句data=it-<second;会调用类的拷贝构造函数。因为你没有写,所以调用的是默认拷贝构造函数。也就是说你的这个赋值,并没有将等号右边的对象绑定给左边的对象,而是发生了拷贝。所以你对teatData1的改变,是不会改变原始对象的。
解决办法就是重写拷贝构造函数,让他返回原始对象。还有就是可以使用指针的方式。
把getTestData改成setTestData,用data给it->second赋值