C++ - 纯虚函数与抽象类

  • 纯虚函数:没有函数体的虚函数
class A{
      private:
          int a;
      public:
          virtual void Print() = 0;//纯虚函数
}
  • 抽象类:包含纯虚函数的类
    • 只能作为基类来派生新类使用
    • 不能创建抽象类的对象
    • 抽象类的指针和引用 -> 由抽象类派生出来的类的对象
A a;//错,A 是抽象类,不能创建对象
A *pa;//ok,可以定义抽象类的指针和引用
pa = new A;//错误,A 是抽象类,不能创建对象
  • 抽象类中
    • 在成员函数内可以调用纯虚函数
    • 在构造函数/析构函数 内部不能使用纯虚函数
  • 如果一个类从抽象类派生而来
    它必须实现了基类中的所有纯虚函数,才能成为非抽象类
  • 举例
class A{
    public:
          virtual void f() = 0;
          void g(){ this->f(); }
          A(){}
};
class B:public A{
      public:
          void f(){ cout<<"B:f()"<<endl;}
};
int main(){
    B b;
    b.g();
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C++虚函数 C++虚函数是多态性实现的重要方式,当某个虚函数通过指针或者引用调用时,编译器产生的代码直到运行时才...
    小白将阅读 1,755评论 4 19
  • 参考来源:知乎 定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的...
    夜幕青雨阅读 857评论 0 6
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 9,537评论 1 51
  • 黑枸杞就是这么宠女人! 2017-02-19 肖叹集团战略合作伙伴 不知不觉,你已经从被小朋友叫姐姐的年龄变成叫阿...
    安如初梦阅读 339评论 3 0
  • 一、彤彤的阳光日记 1.早上彤彤起床花费了15分钟,吃早饭花费了15分钟,但是没吃多少东西。 2.出去玩拉着妹妹做...
    彤彤爸爸阅读 367评论 0 0