[Kde-devel-es] Dudas muy basicas
David García Garzón
kde-devel-es@mail.kde.org
Wed, 11 Dec 2002 00:14:09 +0100
> > -Una de c++
> > No acabo de ver porque en determinados momentos hemos de acceder
> > a ciertas funciones con los dos puntos (::),en vez de con un simple
> > punto.
> >
> > ej: KFileDialog::getOpenURL ();
>
> No estoy seguro, pero creo que eso sólo se puede hacer con los métodos
> estáticos... estos son lo que puedes llamar indicando el nombre de la clase
> a la que pertenecen, pero no necesitas crear una instancia de la clase. En
> este caso concreto, el método 'getOpenURL()' debe ser estático, y no
> necesitamos instanciar la clase 'KFileDialog' para usarlo, es decir, no
> necesitamos hacer esto:
>
> KFileDialog dialog = new KFileDialog();
> dialog.getOpenURL();
Ignacio tiene toda la razon. Ademas esa sintaxis, a parte de usarse para
llamar a metodos estaticos que no necesitan un objeto para ejecutarse,
tambien se usa a veces para llamar a explicitamente a metodos de la
superclase. Por ejemplo:
class Padre {
...
public:
virtual void unMetodo() {
bla bla bla
}
static void unMetodoEstatico() {
}
};
class Hijo : public Padre {
...
public:
virtual void unMetodo() {
bla bla bla
// Llamamos al metodo del padre, asi nos ahorramos rescribir
// y facilitamos el mantenimiento
Padre::unMetodo();
}
};
void main () {
Subclase foo;
foo.unMetodo(); // Llama al que toca (el de Hijo)
foo.Padre::unMetodo(); // Llama explicitamente al del padre
foo.Hijo::unMetodo(); // Llama explicitamente al del hijo
Padre::unMetodoEstatico(); // Llama al metodo estatico, no necesita objeto
}