Esa es la forma en que el lenguaje solía funcionar. Antes de la usando de palabras clave, si sustituimos una función sobrecargada, había que sobrecargarlos todo:
class bar : public foo
{
public:
bar(void);
~bar(void);
a(int);
a(double d) { foo::a(d); } // add this
}
Este pueblo suficientes molesto que el comité idioma añade la usando función, pero algunos viejos hábitos son difíciles ; y los habitués y daga; tener un buen argumento
Como James Hopkins señala, añadiendo usando, el programador está expresando la intención de que la clase derivada, sin previo aviso, añadir los reemplazos futuros de foo :: a() a su lista de firmas aceptables.
Aquí es un ejemplo de lo que él describe: "Derivado :: doble"
#include <iostream>
class Base {
public:
virtual void f(double){ std::cout << "Base::Double!" << std::endl; }
// virtual void f(int) { std::cout << "Base::Int!" << std::endl; } // (1)
virtual ~Base() {}
};
class Derived : public Base {
public:
// using Base::f; // (2)
void f(double) { std::cout << "Derived::Double!" << std::endl; }
};
int main(int, char **) {
Derived d;
d.f(21);
return 0;
}
La salida será porque el compilador promoverá el argumento entero a un doble. g ++ 4.0.1 -Wall no advertirá que se produjo esta promoción.
Descomentar (1) para simular un cambio futuro a Base agregando el método Base :: f (int). El código se compila, de nuevo, sin previo aviso, incluso con -Wall, y "Derived :: Double!" sigue siendo la salida.
Ahora elimine el comentario (2) para simular una decisión del programador Derived de incluir todas las firmas Base :: f. El código se compila (sin advertencias), pero el resultado ahora es "Base :: Int!".
—
y daga; No puedo pensar en una palabra en inglés para "aquellos que tienen el hábito" y "adicto" es demasiado fuerte.
Ayudaría si publicaras (si es posible) el código real. Al código que ha publicado le faltan algunos detalles, como punto y coma después de las definiciones de clase y el tipo de retorno para 'a' en' bar' ... –
No puedo publicar el código real. Agregué los detalles en la publicación, esto no fue realmente un ejercicio de sintaxis. – Greg
http://stackoverflow.com/questions/72010/c-overload-resolution –