Las clases abstractas sirven para proporcionar clase base, a partir las clases pueden heredan sus datos y funciones miembro. No se pueden generar objetos para este tipo de clases.
Cuando se hereda una clase abstracta, se tiene que implementar todas las funciones virtuales, o la clase que se hereda se convierte en una nueva clase abstracta
Ejemplo
Codificación CodeBlocks
#include <iostream>
using namespace std;
class Figura
{
public:
virtual void dibujaFigura() ;
virtual void nombreFigura() ;
virtual double areaFigura() ;
virtual void mostrarDatosFigura() ;
};
void Figura::nombreFigura()
{}
double Figura::areaFigura()
{ }
void Figura::mostrarDatosFigura() { }
class Rectangulo:public Figura
{
protected:
double largo;
double ancho;
public:
Rectangulo();
Rectangulo(double, double);
virtual void dibujaFigura() ;
virtual void nombreFigura() ;
virtual double areaFigura() ;
virtual void mostrarDatosFigura() ;
};
Rectangulo::Rectangulo()
{
largo=0;
ancho=0;
}
Rectangulo::Rectangulo(double la,double an)
{
largo=la;
ancho=an;
}
void Rectangulo::dibujaFigura()
{
cout<<"\t********************\n";
cout<<"\t* *\n";
cout<<"\t* *\n";
cout<<"\t* *\n";
cout<<"\t********************\n";
}
void Rectangulo::nombreFigura()
{
cout<<"\tRECTANGULO\n\n";
}
double Rectangulo::areaFigura()
{
return largo*ancho;
}
void Rectangulo::mostrarDatosFigura()
{
cout<<"\tDatos Rectangulo\n";
cout<<"\tLargo = "<<largo<<endl;
cout<<"\tAncho = "<<ancho<<endl;
cout<<"\tArea = "<<areaFigura()<<endl;
}
int main()
{
Rectangulo r1(20,10);
r1.nombreFigura();
r1.dibujaFigura();
r1.mostrarDatosFigura();
return 0;
}
No hay comentarios:
Publicar un comentario