纯虚函数

含有纯虚函数的类是抽象类,抽象类不能实例化对象。

仅含有纯虚函数的类叫接口类(无成员变量)。

如果某个类的虚函数没有被实现,则该类不能实例化对象。

如果想要派生类实现虚函数,则基类的虚函数置0(此时为纯虚函数)或者基类的虚函数也实现了。

如果基类有纯虚函数,则派生类中必须实现它

class Tool {  
public:
    virtual void eat() = 0;  // 这是个抽象类,如果没有实现,就叫纯虚函数,派生类必须实现。
};
#pragma once
#include "Tool.h"
class Dog:public Tool{ // 继承的意义:表示Dog类具有Tool类里面函数的功能
public:
    virtual void eat();     // 继承抽象类的子类需要实现这个函数才能实例化子类
};
#include "Dog.h"
#include <iostream>

using namespace std;

void Dog::eat() {   // 继承抽象类的子类需要实现这个函数才能实例化子类
cout << "eat" << endl; }
int main() {
    Tool *d = new Dog(); // 这是基类指针指向派生类对象。如果没有virtual,则调用基类的函数,若有则调用派生类的(加上virtual能多态,不加virtual只祖宗)。不能是:Tool *d = new Tool();,只能new"Tool"以下的类,如 Dog *d = new Dog();也行
d->eat(); delete d; d = NULL; system("pause"); return 0; }

 

虚函数注意:

    1. 在基类用virtual声明成员函数为虚函数。
      这样就可以在派生类中重新定义此函数,为它赋予新的功能,并能方便地被调用。在类外定义虚函数时,不必再加virtual。
    2. 在派生类中重新定义此函数,要求函数名、函数类型、函数参数个数和类型全部与基类的虚函数相同,并根据派生类的需要重新定义函数体。
      C++规定,当一个成员函数被声明为虚函数后,其派生类中的同名函数都自动成为虚函数。因此在派生类重新声明该虚函数时,可以加virtual,也可以不加,但习惯上一般在每一层声明该函数时都加virtual,使程序更加清晰。如果在派生类中没有对基类的虚函数重新定义,则派生类简单地继承其直接基类的虚函数。

 

转载于:https://www.cnblogs.com/pjishu/p/9265295.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值