C ++ Primer quinto notas (control de copia del capítulo 13) Ejemplo 1 análisis de prueba y resultado

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

Supongo que te gusta

Origin blog.csdn.net/thefist11cc/article/details/113914074
Recomendado
Clasificación