cpp
//Definicin de las funciones miembro para la clase punto
#include"punto1.h"
Punto::Punto(int a, int b){establecePunto(a,b);}
void Punto::establecePunto(int a, int b)
{
x=a;
y=b;
}//fin de la funcion establecePunto
void Punto::imprime() const
{ cout<<'['<<x<<","<<y<<']';}
//circulo1.cpp
//Definicion de las funciones miembro para la clase circulo
#include<iostream>
using std::cout;
#include"circulo1.h"
Circulo::Circulo (double r, int a, int b):Punto(a,b)
//llama al constructor de la clase base
{estableceRadio(r);}
void Circulo::estableceRadio(double r){radio=r>0?r:0;}
double Circulo::obtieneRadio()const {return radio;}
//cilindro.cpp
//Definicion de las funciones y amigas para la clase cilindro
#include<iostream>
using std::cout;
#include"cilindro1.h"
cilindro::cilindro(double h, double r,intx, int y):circulo(r, x, y)//llama al
constructor dela clase base
{estableceAltura(h);}
void cilindro::estableceAltura(double h)
{altura= h>0?h:0;}
double cilindro::obtieneAltura()[retur altura;}
double cilindro::area() const
{
//superficie del cilindro
return 2 *circulo::area()+ 2*3.14159*obtieneRadio()*altura;
}//fin de la funcion area
double cilindro::voulumen() const
{return Circulo::area()*altura;}
void cilindro::imprime() const
{
Circulo::imprime();
cout<<";Altura="<<altura;
}//fin de la funcin imprime
#include<iomanip>
using std::ios;
using std::setiosflags;
using std::setprecision;
#include"figura.h"
#include"punto1.h"
#include"circulo1.h"
#include"cilindro1.h"
int main()
{
cout<<setiosflags(ios::fixed | ios::showpoint)<< setprecision(2);
return 0;
}// ifn de la funcion main
//Hace llamadas a funciones virtuales mediante un apuntador a la clase con el uso
de vinculacin esttica
void apuntadorviavirtual(const Figura *ptrClaseBase)
{
ptrClaseBase->imprimeNombreFigura();
ptrClaseBase->imprime();
cout<<"\nArea="<<ptrClaseBase->area()<<"\nVolumen="<<ptrClaseBase-
>voulumen<<"\n\n"";
}//fin de la funcin apuntadorviavirtual
//Hace llamadas a funciones virtuales mediante una referencia a la clase con el uso
de vinculacin esttica
void referenciaviavirtual(const Figura &refClaseBase)
{
refClaseBase.imprimeNombreFigura();
refClaseBase.imprime();
cout<<"\nArea="<<refClaseBase.area()<<"\nVolumen="<<refClaseBase.volumen()<<"\n\n";
}//fin de la funcion referenciaviavirtual