#include <iostream>
#include <cstdlib>
#include <vector>
using namespace std;
class vehiculo {
public:
vehiculo();
void mod_ruedas(int);
int get_ruedas()const;
virtual void imprime()const=0;
private:
int ruedas;
static int n_vehiculos;
};
class bici:public vehiculo {
public:
virtual void imprime()const;
bici(int,int);
private:
int pi;
};
class coche:public vehiculo {
public:
virtual void imprime()const;
coche(int,int);
private:
int cv;
};
//programa main
int main()
{
bici b1(18,2);
b1.imprime();
bici b2(21,4);
b2.imprime();
coche c1(110,4);
c1.imprime();
coche c2(55,3);
c2.imprime();
coche c3(210,4);
c3.imprime();
coche c4(155,4);
c4.imprime();
coche c5(60,3);
c5.imprime();
c5.mod_ruedas(4);
c5.imprime();
vector<vehiculo>v;
//v.push_back(b1); Si pongo este push_back me da un error
system("PAUSE");
return 0;
}
//Implementacion de clase vehiculo
vehiculo::vehiculo()
{
}
void vehiculo::mod_ruedas(int a)
{
ruedas=a;
}
int vehiculo::get_ruedas()const
{
return ruedas;
}
//Iniciacion de los datos estaticos
int vehiculo::n_vehiculos=0;
//Implementacion de la clase bici
bici::bici(int a,int b)
{
pi=a;
mod_ruedas(b);
}
void bici::imprime()const
{
cout<<"Soy un bike de "<<get_ruedas()<<" ruedas y "<<pi<<" pinones."<<endl;
}
//Implementacion de la clase coche
coche::coche(int a,int b)
{
cv=a;
mod_ruedas(b);
}
void coche::imprime()const
{
cout<<"Soy un coche de "<<get_ruedas()<<" ruedas y "<<cv<<" caballos."<<endl;
}