Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/04/2014, 06:42
CalgaryCorpus
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 6 meses
Puntos: 61
Respuesta: C++11 - Costructores de movimiento - experimento fallido - AVISO: ES LARGO

Pon la clase A y B en el mismo programa para compilarlos con el mismo compilador.
Luego cambia tu main() para que invoque a una funcion que ejercite el mismo codigo para los 2 tipos de clases, por ejemplo asi:

Código C++:
Ver original
  1. template <typename T>
  2. int testf(T dummy){
  3.         cout << "Comienzo test " << endl;
  4.         vector<T> vb;
  5.         for(int j=0;j<200;j++){
  6.                 cout << j << "  Insertando 50000 elementos " << endl;
  7.                 for(int i=0;i<50000;i++){
  8.                         vb.push_back(T(1024));
  9.                 }
  10.                 cout << j << "  Eliminando 50000 elementos " << endl;
  11.                 for(int i=0;i<50000;i++){
  12.                         vb.pop_back();
  13.                 }
  14.         }
  15.         cout<<"Terminado"<<endl;
  16.         return 0;
  17. }
  18.  
  19. int main(){
  20.     A a;
  21.     B b;
  22.  
  23.     testf(a);
  24.     testf(b);
  25.  
  26.     return 0;
  27. }

Has profiling de ese programa y verifica que los constructores se esten llamando igual cantidad de veces.

En un asunto paralelo, este constructor
Código C++:
Ver original
  1. B::B(size_t sz,char *c):size(sz){ strcpy(this->buf,c); }

esta copiando dentro de buf y, si se está construyendo, ¿adonde apunta buf?
La clase A tiene un constructor similar.

Hay otros posibles problemas, pero estan mas relacionados con problemas que no se han presentado (aun) y no con los que muestras aqui, por ejemplo, copiar usando strcpy, mejor memcpy o strncpy, etc.
__________________
Visita mi perfil en LinkedIn