zoukankan      html  css  js  c++  java
  • C++virtual 虚函数、纯虚函数

    前提摘要:

    虚函数联系到多态,多态联系到继承。所以本文中都是在继承层次上做文章。没了继承,什么都没得谈。

    虚函数定义:

    指向基类指针或引用在操作它的多态类(子类/派生类)对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数。

    使用方法:

    1.只需要在成员函数声明前使用关键字“virtual”将函数声明为虚函数(子类中可加可不加,没加系统会自动判定为虚函数,为了阅读性,建议加上),而函数实现不需要使用关键字“virtual”。

    2.非类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数也不能定义为虚函数,但可以将析构函数定义为虚函数。实际上,优秀的程序员常常把基类的析构函数定义为虚函数。因为,将基类的析构函数定义为虚函数后,当利用delete删除一个指向派生类定义的对象指针时,系统会调用相应的类的析构函数。而不将析构函数定义为虚函数时,只调用基类的析构函数。

    测试代码:

    #include <iostream>
    
    using namespace std;
    class A
    {
    public:
        A(){}
        virtual ~A(){}
        virtual void print();
    };
    void A::print()
    {
       cout << "aaaa" << endl;
    }
    class B:public A
    {
    public:
        B(){}
        ~B(){}
        void print()
       {
          cout << "bbbb" << endl;
       }
    };
    
    int main()
    {
        A *a1 = new A;
        A *a2 = new B;
        a1->print();
        a2->print();
        return 0;
    }

    输出结果:

    纯虚函数:

    1、纯虚函数声明如下: virtual void funtion1()=0;

    2.有纯虚函数的类是抽象类,不能生成对象,只能派生。

    3.定义纯虚函数的类不可实例化;其派生类没有为该纯虚函数定义实现方法也不可实例化;

  • 相关阅读:
    Python3 函数return
    Python3 函数参数
    计算机组成原理基础
    解决 Python2 和 Python3 的共存问题
    管理本地用户和组
    Linux 常用命令(二)
    Linux 控制台
    Linux 常用命令(一)
    Linux中的目录功能(Red Hat 7)
    自定义属性使用
  • 原文地址:https://www.cnblogs.com/flowingwind/p/8152369.html
Copyright © 2011-2022 走看看