Asi como existen datos constants que no se pueden modificar,tambien existen objetos y datos miembro que al utilizer la palabra reservada const esspecifica que un objeto no se puede modificar y si se intent modificar el compilador genera un error de sintaxis.
Ejemplo
#include <iostream>
using namespace std;
class Circulo
{
private:
double radio;
friend void estRadio(Circulo &, double rad);
public:
Circulo(double rad);
Circulo();
void estableceRadio(double rad);
double areaCirculo();
void imprimeDatosCirculo();
double obtenerRadio() const;
void imprimeInfCirculo()const;
};
Circulo::Circulo(double rad)
{
radio=rad;
}
Circulo::Circulo()
{
radio=0;
}
void Circulo::estableceRadio(double rad)
{
radio=rad;
}
double Circulo::areaCirculo()
{
return 3.1416*radio*radio;
}
void Circulo::imprimeDatosCirculo()
{
cout<<"\n\nDatos del circulo\n";
cout<<"Radio: "<<radio<<endl;
cout<<"Area: "<<areaCirculo()<<endl;
}
double Circulo::obtenerRadio() const
{
return radio;
}
void Circulo::imprimeInfCirculo() const
{
double const r=obtenerRadio();
cout<<"\n\nRadio: "<<obtenerRadio()<<endl;
cout<<"Area: "<<(3.1416*r*r)<<endl;
}
void estRadio(Circulo &c, double val)
{
c.radio=val;
}
int main()
{
Circulo c1;
const Circulo c2(45.0); // se declara el objeto c2 como constante
estRadio(c1,15.0);
c1.imprimeDatosCirculo();
c1.estableceRadio(10);
c1.imprimeDatosCirculo();
c2.imprimeInfCirculo(); // la function miembro debe ser const
return 0;
}
No hay comentarios:
Publicar un comentario