C++纯虚函数与抽象基类,虚函数

在C++中,纯虚函数(Pure Virtual Function)和抽象基类(Abstract Base Class)以及虚函数(Virtual Function)是面向对象编程中的关键概念,它们与多态性(Polymorphism)密切相关。

虚函数(Virtual Function)

虚函数是C++中实现多态的一种机制。当一个基类希望其派生类能够重写(Override)它的某个成员函数时,可以将该函数声明为虚函数。虚函数允许在运行时(而非编译时)根据对象的实际类型来决定调用哪个版本的函数。

class Base {  
public:  
    virtual void show() {  
        // 基类实现  
        std::cout << "Base class show function" << std::endl;  
    }  
};  
  
class Derived : public Base {  
public:  
    void show() override {  
        // 派生类重写  
        std::cout << "Derived class show function" << std::endl;  
    }  
};

在上面的例子中,Base类中的show函数是虚函数,Derived类重写了这个函数。

纯虚函数(Pure Virtual Function)

纯虚函数是一种特殊的虚函数,它在基类中没有具体实现,只是声明了函数的接口。纯虚函数的声明方式是在函数声明的末尾加上= 0。包含纯虚函数的类被称为抽象基类。

class AbstractBase {  
public:  
    virtual void pureVirtualFunction() = 0; // 纯虚函数  
};

抽象基类不能实例化,因为它们至少包含一个未实现的纯虚函数。抽象基类的目的是为派生类提供一个接口,派生类必须实现这些纯虚函数才能被实例化。

抽象基类(Abstract Base Class)

抽象基类是指包含至少一个纯虚函数的类。由于抽象基类不能实例化,它们通常用作接口或基类,为派生类提供一套必须实现的函数。

class AbstractBase {  
public:  
    virtual void pureVirtualFunction() = 0; // 纯虚函数  
    virtual void anotherFunction() {  
        // 可以有实现的虚函数  
    }  
};  
  
class ConcreteDerived : public AbstractBase {  
public:  
    void pureVirtualFunction() override {  
        // 派生类实现纯虚函数  
    }  
};

在这个例子中,AbstractBase是一个抽象基类,因为它包含一个纯虚函数pureVirtualFunction。ConcreteDerived类从AbstractBase继承,并实现了纯虚函数,因此可以被实例化。

总结:

  • 虚函数:允许在运行时根据对象的实际类型调用相应的函数实现。
  • 纯虚函数:没有具体实现的虚函数,用于定义接口。
  • 抽象基类:包含至少一个纯虚函数的类,不能实例化,通常用作接口或基类。

通过理解这些概念,可以设计出更加灵活和可扩展的C++程序,利用多态性来实现不同的行为。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值