C++面向对象--第十四章抽象类(接口)

抽象类

一个类至少有一个纯虚函数,那么就称该类为抽象类

对于抽象类的使用有以下几点规定:

1.由于抽象类中至少包含一个没有定义功能的纯虚函数。因此,抽象类只能作为其他类的基类来使用,不能实例化抽象类对象。

但是可以声明指向抽象类的指针或引用,此指针可以指向它的派生类,进而实现多态性。

2.抽象类派生出子类,那么在子类中必须实现所有的纯虚函数

如果有一个没有实现,则该子类也是抽象类

3.不允许从具体类派生出抽象类。所谓具体类,就是不包含纯虚函数的普通类。

4.抽象类不能用作函数的参数类型、函数的返回类型或是显式转换的类型。

5.如果派生类中没有定义纯虚函数的实现,而派生类中只是继承基类的纯虚函数,则这个派生类仍然是一个抽象类。如果派生类中给出了基类纯虚函数的实现,则该派生类就不再是抽象类了,它是一个可以建立对象的具体类了。

#include <iostream>

using namespace std;



// 抽象基类

class Animal {

  public:

    // 纯虚函数

    virtual void makeSound() const = 0;

};



// 派生类

class Cat : public Animal {

  public:

    void makeSound() const override {

      cout << "Meow!" << endl;

    }

};



// 派生类

class Dog : public Animal {

  public:

    void makeSound() const override {

      cout << "Woof!" << endl;

    }

};



int main() {

  Animal* animal1 = new Cat();

  Animal* animal2 = new Dog();



  animal1->makeSound();

  animal2->makeSound();



  delete animal1;

  delete animal2;



  return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值