Ver Mensaje Individual
  #7 (permalink)  
Antiguo 17/04/2014, 22:37
Avatar de vangodp
vangodp
 
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Problemilla con las clases

No se que quieres lograr con:
Perro benji = Perro("chanda","blanco", 5);

Con Perro benji estas creando un Objeto de tipo Perro se puede decir que es una copia de Perro.
Con Perro("chanda","blanco", 5); intentas acceder sin crear el objeto, es como pillar la clase directo invocar su constructor y pasas ("chanda","blanco", 5). No se si eso es posible normalmente se trabaja sobre objetos y no propiamente la clase en si.
Pero si fuera posible es perfectamente comprensible el por que tienes 3 destructores. Tienes 3 destructores por que uno pertenece a Perro, otro a benji y otro a toby.
Como dije antes cuando haces Perro benji has creado en memoria una copia de Perroi con todos sus métodos y atributos incluido constructores y destructores pero estos últimos pasan a tener el nombre del objeto creado.

En vez de hacer: Perro benji = Perro("chanda","blanco", 5);
Prueba: Perro benji ("chanda","blanco", 5);
Cuando creas un objeto, ese ya no lleva el nombre de la clase(Perro) sino su propio nombre, o sea que si el constructor de la clase Perro es Perro("chanda","blanco", 5); el constructor de benji es su propio nombre benji("chanda","blanco", 5);

Prueba Esto:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdlib.h>
  3. using namespace std;
  4.  
  5. class Perro {
  6.     public:
  7.         Perro ( string unaRaza, string unColor, int unaEdad ) {
  8.             suRaza  = unaRaza;
  9.             suColor = unColor;
  10.             suEdad  = unaEdad;
  11.             cout << suRaza << " creado!" << endl;
  12.         }
  13.         ~Perro() { cout << suRaza << " destruido\n"; }
  14.         void  ladrar () const;
  15.         void sentarse() const;
  16.         void  getinfo() const;
  17.     private:
  18.         string suRaza, suColor;
  19.         int suEdad;
  20. };
  21.  
  22. void Perro::ladrar() const {
  23.     cout << "guau guau guau";
  24. }
  25.  
  26. void Perro::sentarse() const {
  27.     cout << "que descanso";
  28. }
  29.  
  30. void Perro::getinfo() const {
  31.     cout << "La raza es: " << suRaza  << endl;
  32.     cout << "El color es: " << suColor << endl;
  33.     cout << "La edad es: " << suEdad  << endl;
  34. }
  35.  
  36. int main () {
  37.     Perro( "papanatas", "trasparente", 100 );
  38.     Perro benji ( "chanda", "blanco", 5 );
  39.     Perro toby ( "pastor aleman", "negro", 3 );
  40.  
  41.     cin.ignore();
  42. }

Última edición por vangodp; 17/04/2014 a las 22:51