1. Código de prueba y resultados
string s1("contents1");
string s2("contents2");
string s3("contents3");
string s4("contents4");
string s5("contents5");
string s6("contents6");
// all new messages, no copies yet
Message m1(s1);
Message m2(s2);
Message m3(s3);
Message m4(s4);
Message m5(s5);
Message m6(s6);
Folder f1;
Folder f2;
m1.save(f1);
m3.save(f1);
m5.save(f1);
m1.save(f2);
m2.save(f2);
m4.save(f2);
m6.save(f2);
/ * 输出 为
Mensaje:
contenido1
Aparece en 2 carpetas La
carpeta contiene 4 mensajes
Mensaje 1:
contenido1
Mensaje 2:
contenido2
Mensaje 3:
contenido4
Mensaje 4:
contenido6
* /
m1.debug_print();
f2.debug_print();
// create some copies
Message c1(m1);
Message c2(m2), c4(m4), c6(m6);
/ * f2 增加 了 c1, c2, c4, c6, 输出 为
Mensaje:
contenido1
Aparece en 2 carpetas La
carpeta contiene 8 mensajes
Mensaje 1:
contenido1
Mensaje 2:
contenido2
Mensaje 3:
contenido4
Mensaje 4:
contenido6
Mensaje 5:
contenido1
Mensaje 6:
contenido2
Mensaje 7:
contenido4
Mensaje 8:
contenido6
* /
m1.debug_print ();
f2.debug_print ();
// now some assignments
m2 = m3;
m4 = m5;
m6 = m3;
m1 = m5;
/ * El contenido de m1 se convierte en m5. Después de cada asignación de m2, m4 y m6, solo c1, c2, c4 y c6 permanecen en f2
Mensaje:
contenido5
Aparece en 1 carpetas La
carpeta contiene 4 mensajes
Mensaje 1:
contenido1
Mensaje 2:
contenido2
Mensaje 3:
contenido4
Mensaje 4:
contenido6
* /
m1.debug_print ();
f2.debug_print ();
// finally, self-assignment
m2 = m2;
m1 = m1;
/ * m1 se asigna a sí mismo a 0. f2 sin cambios
Mensaje:
contenido5
Aparece en 0 Carpetas La
carpeta contiene 4 mensajes
Mensaje 1:
contenido1
Mensaje 2:
contenido2
Mensaje 3:
contenido4
Mensaje 4:
contenido6
* /
m1.debug_print ();
f2.debug_print ();
vector<Message> vm;
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m1);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m2);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m3);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m4);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m5);
cout << "capacity: " << vm.capacity() << endl;
vm.push_back(m6);
vector<Folder> vf;
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(f1);
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(f2);
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(Folder(f1));
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(Folder(f2));
cout << "capacity: " << vf.capacity() << endl;
vf.push_back(Folder());
cout << "capacity: " << vf.capacity() << endl;
Folder f3;
f3.save(m6);
vf.push_back(f3);
cout << "capacity: " << vf.capacity() << endl;
cout << endl;
Los resultados restantes son los siguientes:
capacity: 0
capacity: 1
capacity: 2
capacity: 3
capacity: 4
capacity: 6
capacity: 0
capacity: 1
capacity: 2
capacity: 3
capacity: 4
capacity: 6 //这里虽然结果是6,但是size是6
capacity: 6
[Referencia]
[1] Código copyControl.h