虚函数

  1. 1 虚析构函数
  2. 2 纯虚函数
  • 3 纯虚析构函数
  • 1 虚析构函数

    作用是为了当用一个基类的指针删除一个派生类的对象时,派生类的析构函数会被调用。 并不是所有类的析构函数都要写成虚函数,因为当类有函数时,编译器会给类添加一个虚函数表,里面来存放虚函数指针,这样就会增加类的内存空间,所以只有当一个类被用来作为基类的时候,才把析构函数写成虚函数。

    class Base {
    public:
        virtual ~Base(){};
    }
    

    2 纯虚函数

    纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

    class Base {
    public:
        virtual void show() = 0;
    }
    

    3 纯虚析构函数

    析构函数可以声明为纯虚析构函数,用于基类刚好没有任何纯虚函数的情况。纯虚析构函数需要在基类中定义实现,除析构函数外,其他纯虚函数必须在派生类中定义实现。

    class Base {
    public:
        virtual ~Base() = 0;
    }
    Base::~Base() {}
    

    转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 add358@163.com

    文章标题:虚函数

    文章字数:309

    本文作者:Jake Yang

    发布时间:2017-07-27, 00:00:00

    最后更新:2019-12-16, 16:02:46

    原始链接:https://add358.github.io/2017/07/27/Language-CXX-2017-07-27-虚函数/

    版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

    目录
    ×

    喜欢就点赞,疼爱就打赏