Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Clases en C++, que quiere decir esta linea?

Estas en el tema de Clases en C++, que quiere decir esta linea? en el foro de C/C++ en Foros del Web. Estoy leyendo un libro de Inteligencia Artificial, y estan implementando una clase que se llama FuzzySet No tengo problemas para leer todo el codigo, pero ...
  #1 (permalink)  
Antiguo 31/01/2011, 13:15
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 14 años, 6 meses
Puntos: 95
Clases en C++, que quiere decir esta linea?

Estoy leyendo un libro de Inteligencia Artificial, y estan implementando una clase que se llama FuzzySet

No tengo problemas para leer todo el codigo, pero hay una linea que no me termina de quedar claro que quiere decir y me gustaria aclararlo

la linea es
FuzzySet(double RepVal):m_dDOM(0.0), m_dRepresentativeValue(RepVal){}

Me queda claro que se trata del constructor, que toma como parametro una variable double que se llama RepVal, pero no se como leer el simbolo :
ni tampoco que quiere decir la ,

m_dRepresentativeValue es una variable tipo double, pero porque tiene entre parentesis RepVal? y despues los {} ??

Ya busque en mis libros de C/C++ y no encuentro ningun ejemplo similar.


Tambien me encontre con esta otra linea que no se que significa

virtual double CalculateDOM(double val)const =0;

Entiendo que se trata de una funcion virtual, que regresa una variable double, y se pasa como parametro una variable double, pero es el
const = 0;
el que me saca de onda.

Aprecio cualquier ayuda para leer esas dos lineas, gracias :)
  #2 (permalink)  
Antiguo 31/01/2011, 15:22
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 14 años
Puntos: 32
Respuesta: Clases en C++, que quiere decir esta linea?

Hola:

Cita:
Iniciado por AlanChavez Ver Mensaje
FuzzySet(double RepVal):m_dDOM(0.0), m_dRepresentativeValue(RepVal){}
La clase FuzzySet tiene los atributos m_dDOM y m_dRepresentativeValue.
llamar :m_dDOM(0.0), m_dRepresentativeValue(RepVal)
lo q hace es llamar a los constructores de esos atributos pasándole los parámetros q necesite. Para los tipos primitivos (int, double, etc) simplemente pones el valor q quieres ponerle entre paréntesis.
Los {} son el cuerpo del constructor, como lo único q hace es inicializar esos 2 atributos no hay nada q poner ahí.

El mismo comportamiento lo puedes tener así:
Código C++:
Ver original
  1. FuzzySet(double RepVal)
  2. {
  3.              m_dDOM(0.0);
  4.              m_dRepresentativeValue = RepVal;
  5. }

El "=0" del otro método significa q es un método virtual puro, lo q convierte a la clase FuzySet en Abstracta.

saludos;


Nup_


PD: No sé q libros estes leyendo pero te sugiero q busques otros más avanzados.
  #3 (permalink)  
Antiguo 31/01/2011, 15:59
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Clases en C++, que quiere decir esta linea?

solo para completar un poco tu información nup_. Una clase abstracta(basta con declarar un método virtualmente puro para que una clase sea abstracta) significa que no podrá ser instanciada, por lo que sera necesario crear una clase que herede los métodos de la clase Abstracta, la cual para poder ser instanciada necesita definir todoso los metodos declarados como virtualmente puros en la clase abstracta. Const en en un método no static(ya que no podras ponerle static a un método static) significa que los atributos de la clase no podran ser alterados esto es por ejemplo

class abstracta
{
int val;

abstracta():val(0)
{
}

public:
fo() const
{
return val;// val no podrá ser modificado ya que el método tiene puesto const
}

};
  #4 (permalink)  
Antiguo 03/02/2011, 10:22
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 14 años, 6 meses
Puntos: 95
Respuesta: Clases en C++, que quiere decir esta linea?

Ok, queda entendido.
Muchas gracias por la ayuda, y si supongo que buscare mejores libros en C++

Etiquetas: clases, linea
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:36.