如果沒有B的複製構造函數的非調用調用,是否可以將映射從1個實例A合併到另一個實例?C++ 11使用兩個映射之間的移動賦值進行STL合併
class A
{
...
A & operator=(A && rhs);
map<string, B> map;
};
class B
{
B();
B & B(B && rhs);
...
}
...
A instanceOfA1;
A instanceOfA2;
B instanceOfB1;
B instanceOfB2;
B instanceOfB3;
B instanceOfB4;
instanceOfA1.map.insert(pair<string, B>("one", instanceOfB1));
instanceOfA1.map.insert(pair<string, B>("two", instanceOfB2));
instanceOfA1.map.insert(pair<string, B>("three", instanceOfB3));
instanceOfA2.map.insert(pair<string, B>("four", instanceOfB4));
instanceOfA2 = instanceOfA1;
所以instanceOfA2該地圖包含B.
編輯的所有四個實例:在代碼中修復情況。
豈不是'instanceOfA2 =移動( instanceOfA1)'? –