[Kde-devel-es] Dudas muy basicas
Antonio Larrosa Jiménez
kde-devel-es@mail.kde.org
Wed, 11 Dec 2002 00:14:34 +0100
El Martes, 10 de Diciembre de 2002 22:55, Gerard escribió:
> Unas pequeñas dudas sobre el manual de antonio larrosa y de c++
>
Como ya Ignacio te contesta a la perfección, yo sólo voy a hacer algunos
comentarios adicionales.
> KMenuBar *menu = menuBar();
>
El método menuBar simplemente nos devuelve la barra de menús actual, si es
la primera vez que se llama, la crea para nosotros (usando new
internamente), y si ya está creado el menú, sólo nos devuelve un puntero,
con lo que no hace falta que guardemos en otra variable el puntero a la
barra de menú, sino que basta con llamar a esa función cuando lo
necesitemos.
> -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 ();
>
Como dice Ignacio, generalmente se usa para llamar a funciones estáticas en
las que no hay un objeto sobre el que operen, pero no es el único caso.
También se puede usar para indicar la clase base a la que pertenece una
función que queremos llamar en un método virtual.
Suponte que tenemos:
class A
{
public:
A() { };
virtual int foo(int x) { return x+1; }; // Por ejemplo
};
class B : public A
{
public:
B() : A() { };
int foo(int x);
};
Y queremos que la función foo de B devuelva 0 si x es negativo y lo que
devuelva la función foo de A si es positivo o 0 . Entonces se define como:
int B::foo(int x)
{
if ( x < 0 ) return 0;
return A::foo(x);
}
ya que si pones sólo
if (x<0) return 0;
return foo(x);
estarías llamando recursivamente a la misma función foo de B.
Saludos,
--
Antonio Larrosa Jimenez
KDE developer - larrosa@kde.org
http://developer.kde.org/~larrosa/
Anonymity is a shield from the tyranny of the majority.