Saltar a contenido

Última actualización:2026-10-12

Funciones virtuales puras y clases abstractas en C++

Sobre el autor:

Cuenta pública personal de WeChat:

wechat

1. Funciones virtuales puras y clases abstractas

Una función virtual pura (o función abstracta) en C++ es una función virtual que no implementamos. ¡Solo la declaramos! Una función virtual pura se declara asignando 0 en su declaración.

// 抽象类
Class A {
public: 
    virtual void show() = 0; // 纯虚函数
    /* Other members */
}; 
* Función virtual pura: una función virtual sin cuerpo de función. * Clase abstracta: una clase que contiene funciones virtuales puras.

Una clase abstracta solo puede utilizarse como clase base para derivar nuevas clases; no se pueden crear objetos de una clase abstracta, y los punteros y referencias a la clase abstracta -> deben apuntar a objetos de clases derivadas de la clase abstracta.

Ejemplos de código: abstract_base.h y pure_virtual.cpp

2. Implementar una clase abstracta

Dentro de una clase abstracta: en las funciones miembro se puede llamar a una función virtual pura, pero dentro del constructor/destructor no se puede utilizar una función virtual pura.

Si una clase deriva de una clase abstracta, debe implementar todas las funciones virtuales puras de la clase base para poder convertirse en una clase no abstracta.

// A为抽象类
class A {
public:
    virtual void f() = 0;  // 纯虚函数
    void g(){ this->f(); }
    A(){}  // 构造函数
};

class B : public A{
public:
    void f(){ cout<<"B:f()"<<endl;}  // 实现了抽象类的纯虚函数
};

Ejemplo de código: abstract.cpp

3. Puntos importantes

4. Ejemplo completo

¡Las clases abstractas se implementan a través de la herencia por parte de las clases derivadas!

Ejemplo de código: derived_full.cpp

Temas relacionados

Comentarios