Herencia de objetos C y programación de funciones virtuales
#includelt;iostreamgt;
#includelt;stdio.hgt;
#includelt;stringgt;
usando el espacio de nombres std;
const double PI = 3.14159;
clase Forma
{
protegido:
nombre de cadena; p>
p>
público:
Forma(cadena n): nombre(n){}
cadena getName(){return name;}
área doble virtual() = 0;
perímetro doble virtual() = 0
};
clase Rectángulo: forma pública
p>{
protegido:
doble largo;
doble ancho;
público:
Rectángulo(cadena n, doble l, doble w): Forma(n), longitud(l), ancho(w){}
void setL(doble l){longitud = l;} p>
doble getL(){longitud de retorno;}
void setW(doble w){ancho = w;}
doble getW(){ancho de retorno;}
doble área(){return largo * ancho;}
doble perímetro(){return 2 * (largo ancho);}
};
clase Círculo: Forma pública
{
protegido:
doble radio;
público:
Círculo(cadena n, doble r): Forma(n), radio(r){}
void setR(doble r){radio = r;}
doble getR (){radio de retorno ;}
doble área(){radio de retorno * radio * PI;}
doble perímetro(){retorno 2 * radio * PI;}
} ;
int main()
{
Forma *p[2];
p[0] = nuevo Rectángulo("Rectángulo", 3, 5);
p[1] = nuevo Círculo("círculo", 4);
cout lt; ] -gt; getName() lt; "El área es: " lt;
lt; endl;
cout lt; p[0] -gt; getName() lt;lt; "El perímetro de " es: " lt; lt; p[0] -gt; () lt; lt; endl;
El área de cout lt; p[1] -gt; ] -gt; área() lt; endl;
El perímetro de cout lt; p[1] -gt; p[1] -gt; perímetro() lt; lt;
for(int i = 0; i lt; 2; i )
{
eliminar p [i];
p[i] = NULL;
}
devolver
} p>