虚函数

1 虚函数

关于虚函数的重要概念:

  • 定义为虚函数,不代表它不被实现,定义为纯虚函数,才代表它没有被实现
  • 定义为虚函数是为了允许用基类的指针来调用子类的这个函数
  • 定义纯虚函数是为了实现一个接口,继承这个类时必须要实现这个函数

1.1 举例

以下代码验证了上面的第二点:

class A
{
    public:
        virtual void foo() {cout<<"A::foo() is called"<<endl;     }
}; 
class B:public A{public:
    void foo(){cout<<"B::foo() is called"<<endl;}
}; 
int main(void)
{
    A *a = new B();
    a->foo();
        // 在这里,a虽然是指向A的指针,但是被调用的函数(foo)却是B的!
    return 0;
}

2 纯虚函数

纯虚函数是在基类中声明的虚函数,并且在基类中没有定义,但是要求任何派生类都要定义自己的实现方法;在基类中实现虚函数的方法是在虚函数原型后面加=0

virtual void function_1()=0;

含有纯虚函数的类称为抽象类,一般也是作为基类使用,它不能实例化,如果派生类里实现了这个函数,才能实例化这个派生类的实例,如果派生类里也没有实现那么也不能实例化;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值