2012-07-21 26 views
6

Soy nuevo en el concepto de funciones virtuales en C++, y los hilos como this hacen un buen trabajo vendiendo este concepto. Ok, estoy convencido.¿Por qué las funciones virtuales en C++ se llaman 'virtuales'?

¿Pero por qué las funciones virtuales se llaman 'virtuales'? Quiero decir que tales funciones son tan 'concretas' como funciones/métodos habituales ¿no? Si alguien pudiera explicar la elección de la palabra 'virtual' para nombrar este concepto, sería genial.

+0

@ H2CO3 que no está sobrecargado en ningún sentido. La sobrecarga es cuando una función con el mismo nombre acepta diferentes argumentos. – rubenvb

+0

@rubenvb correcto - Actualizaré mi comentario. –

+0

@ H2CO3 ¡Genial !. La razón por la que lo mencioné es porque uno tiene tiempo de ejecución por encima y el otro no ';)'. – rubenvb

Respuesta

9

virtualidad, la cualidad de tener los atributos de algo sin compartir su (real o imaginario) la forma física

^http://en.wikipedia.org/wiki/Virtual

A C++ función virtual parece ser una función ordinaria (" teniendo los atributos de "), pero la implementación que se llamará no se comparte a través de la declaración, o para el caso a través de una implementación en línea.

+0

Gracias por la respuesta. ¿Podrías explicar a qué te refieres con "no compartir a través de la declaración"? – curiousexplorer

+0

"no compartido a través de la declaración" significa que la información no se proporciona. la declaración no proporciona información acerca de qué implementación será llamada por una llamada dada (virtual) de la función. es posible calificar una llamada para que la llamada no sea virtual, p. 'p-> SomeClass :: aMethod()', pero incluso en este caso la declaración 'SomeClass' 'de' aMethod' no te dice a qué implementación se llamará. hay una excepción, a saber, un método C++ 11 'final', que no puede anularse, cuando la versión' final' es también la introducción original del método. pero eso es patológico ... –

+0

Esta afirmación sobre no dar información también se aplica a las funciones miembro no virtuales no en línea, y de hecho a la mayoría de las funciones. Las funciones virtuales en C++ se refieren específicamente al despacho en el tipo de tiempo de ejecución del objeto. – Bryan

6

'función virtual' significa una función miembro donde la implementación específica dependerá del tipo de objeto invocado, en tiempo de ejecución. El compilador y el soporte en tiempo de ejecución del lenguaje logran que esto suceda.

La palabra clave 'virtual' en C++ se tomó de Simula, lo que impresionó a Bjarne Stroustrup. Las porciones más antecedentes aquí: Pure virtual or abstract, what's in a name?

.. Simula de 67 Common Language Base (1970) .. parece ser la primera lengua para introducir palabras clave como OO clase, objeto, y también virtuales como un concepto formal.

Cuestiones relacionadas