¿Cuál es el papel de las funciones virtuales en C++? ¿Cómo se debe utilizar?
El papel de las funciones virtuales en C++:
1. En pocas palabras, aquellas funciones miembro modificadas por la palabra clave virtual son funciones virtuales.
2. Implementar polimorfismo. El polimorfismo es la separación de interfaz e implementación.
3. Cuando el puntero de la clase base apunta a un objeto de subclase y se llama a una función miembro de la subclase y de la clase base con el mismo nombre a través de este puntero, si la clase base está declarada como virtual. función, se llamará la función de la subclase. Si no está declarada, se llamará a la clase base.
Uso de funciones virtuales en C++:
1. Por ejemplo, si tienes un juego, hay una clase base virtual llamada "Monster" y una función virtual pura "Attack". .
2. Se derivan tres subcategorías: "lobo", "araña" y "pitón", todas las cuales implementan sus propias funciones de "ataque". Por ejemplo, el lobo muerde, la araña hila seda. y la pitón te mata.
3. Cuando hay muchos monstruos, puedes definir una matriz de punteros de clase base virtual, darle los punteros de varios monstruos y luego atacar directamente al monstruo[i]->attack() al iterar el ciclo. Simplemente juegue, como se muestra a continuación:
Información ampliada:
Notas sobre el uso de funciones virtuales:
1. aumentará.
2. Destructor virtual
(1) La función del destructor es realizar el trabajo necesario de "limpieza de la escena" antes de que se cancele el objeto.
(2) Cuando un objeto de una clase derivada se retira de la memoria, primero se llamará al destructor de la clase derivada y luego al destructor de la clase base.
(3) Cuando creamos un nuevo objeto temporal, si la clase base contiene un destructor y define una variable puntero que apunta a la clase base.
3. El constructor no se puede declarar como una función virtual.
El constructor no se puede declarar como una función virtual. Si se declara como una función virtual, el compilador lo informará automáticamente.
4. No llamar a funciones virtuales durante el destructor o proceso de construcción.
En el destructor o constructor, no debemos llamar a funciones virtuales. Incluso si llamamos a una función virtual en el constructor o destructor, no pasará a llamar a la función en la clase derivada.
Función virtual: Enciclopedia Baidu