¿Cuál es la diferencia entre una función abstracta y una función virtual? ¿En qué casos se recomienda usar virtual o abstracto? ¿Cuál es el mejor
En la programación orientada a objetos, una función virtual o método virtual es una función o método cuyo comportamiento puede ser anulado dentro de una clase heredada por una función con la misma firma. Este concepto es una parte muy importante de la parte de polimorfismo de la programación orientada a objetos (OOP).
¿Cuál es la diferencia entre una función abstracta y una función virtual? ¿En qué casos se recomienda usar virtual o abstracto? ¿Cuál es el mejor
Estoy aprendiendo C ++ y solo estoy entrando en funciones virtuales. Por lo que he leído (en el libro y en línea), las funciones virtuales son funciones en la clase base que puede anular en las clases derivadas. Pero al principio del libro, cuando aprendí sobre la herencia básica, pude anular las...
Digamos que tengo clases Fooy Barconfiguro así: class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; void printStuff() { // I would like to call Foo.printStuff() here... std::cout << y...
He oído que las plantillas de funciones miembro de clase C ++ no pueden ser virtuales. ¿Es esto cierto? Si pueden ser virtuales, ¿cuál es un ejemplo de un escenario en el que uno usaría tal
Por lo que entiendo, la introducción de overridepalabras clave en C ++ 11 no es más que una verificación para asegurarse de que la función que se implementa es la función overridede una virtualfunción en la clase base. ¿Es
Con la definición de estructura dada a continuación ... struct A { virtual void hello() = 0; }; Enfoque n. ° 1: struct B : public A { virtual void hello() { ... } }; Enfoque # 2: struct B : public A { void hello() { ... } }; ¿Hay alguna diferencia entre estas dos formas de anular la...
Recibí esta pregunta cuando recibí un comentario de revisión de código que decía que las funciones virtuales no necesitan estar en línea. Pensé que las funciones virtuales en línea podrían ser útiles en escenarios donde las funciones se invocan directamente en los objetos. Pero el contraargumento...
¿Es posible escribir métodos virtuales en Java, como se haría en C ++? ¿O existe un enfoque Java adecuado que pueda implementar que produzca un comportamiento similar? ¿Podría por favor tener algunos
En mi diseño de clase, uso clases abstractas y funciones virtuales ampliamente. Tenía la sensación de que las funciones virtuales afectan el rendimiento. ¿Es esto cierto? Pero creo que esta diferencia de rendimiento no es notable y parece que estoy haciendo una optimización prematura....
Todos sabemos qué funciones virtuales hay en C ++, pero ¿cómo se implementan a un nivel profundo? ¿Se puede modificar vtable o incluso acceder directamente en tiempo de ejecución? ¿Existe vtable para todas las clases, o solo para aquellas que tienen al menos una función virtual? ¿Las clases...
Los métodos de C # en las interfaces se declaran sin usar la virtualpalabra clave y se anulan en la clase derivada sin usar la overridepalabra clave. ¿Hay alguna razón para esto? Supongo que es solo una conveniencia de lenguaje, y obviamente el CLR sabe cómo manejar esto bajo las sábanas (los...
Tener al menos un método virtual en una clase C ++ (o cualquiera de sus clases principales) significa que la clase tendrá una tabla virtual y cada instancia tendrá un puntero virtual. Entonces, el costo de la memoria es bastante claro. El más importante es el costo de la memoria en las instancias...
A veces noto programas que se bloquean en mi computadora con el error: "llamada de función virtual pura". ¿Cómo se compilan estos programas cuando no se puede crear un objeto a partir de una clase
A diferencia de Java, ¿por qué C # trata los métodos como funciones no virtuales de forma predeterminada? ¿Es más probable que sea un problema de desempeño que otros posibles resultados? Recuerdo haber leído un párrafo de Anders Hejlsberg sobre varias ventajas que está aportando la arquitectura...
Tengo una clase base con una función virtual y quiero anular esa función en una clase derivada. ¿Hay alguna forma de hacer que el compilador verifique si la función que declaré en la clase derivada en realidad anula una función en la clase base? Me gustaría agregar alguna macro o algo que asegure...
¿Alguna vez hay una buena razón para no declarar un destructor virtual para una clase? ¿Cuándo debería evitar específicamente escribir
Conozco métodos virtuales de PHP o Java. ¿Cómo se pueden implementar en Python? ¿O tengo que definir un método vacío en una clase abstracta y anularlo?
¿Es posible que una clase heredada implemente una función virtual con un tipo de retorno diferente (sin usar una plantilla como retorno)?
En este ejemplo, las clases Fooy Barse proporcionan desde una biblioteca. Mi clase Bazhereda de ambos. struct Foo { void do_stuff (int, int); }; struct Bar { virtual void do_stuff (float) = 0; }; struct Baz : public Foo, public Bar { void func () { do_stuff (1.1f); // ERROR HERE...