zoukankan      html  css  js  c++  java
  • C++虚函数分析

    1.虚函数(impure virtual)

      c++虚函数主要是提供“运行时多态”,父类提供虚函数的默认实现,子类可以虚函数进行重写。

    2.纯虚函数(pure virtual)

          c++纯虚函数也是“运行时多态”,父类不能提供函数的实现,子类提供函数的实现。包含纯虚函数的类,称为“”抽象类“”,无法用new

    实现对象,只能实现了虚函数的子类才可以new。

    3.普通函数(no-virtual)

         普通函数是静态编译的,是父类给子类提供的强制实现。

    4,多态概念

       相同对象收到不同消息或不同对象收到相同消息产生不同动作

        1)静态多态  编译的时候根据参数个数调用哪个函数,这种情况叫做静态编译。

         2)动态多态 运行的时候,根据调用的函数决定调用的是哪个函数。

    5,多态中存在的问题

        内存泄露,当用delete父类的对象时,只会调用父类的析构函数。如果子类new了一些对象,在析构函数里面释放,就会导致内存泄露。

                        用virtual修饰析构函数,这样父类指针指向的是那个对象,那个对象的析构函数就会先执行,再执行父类的析构函数。

        vertual在函数的使用限制

            1)全局函数不能是虚函数,否则会导致编译错误;

            2)static函数不属于任何对象,也不能是虚函数,否则会导致编译错误

            3)如果内联函数被virtual修饰,计算机就会忽略inline编程,编程纯粹的虚函数。

       4)构造函数不是是虚函数,否则会报编译错误。

    6,接口类

          如果在抽象类中仅含虚函数而不含其它任何东西,我们称为接口类

           1,没有任何数据成员;

           2,仅有函数成员;

           3,函数成员都是纯虚函数。

  • 相关阅读:
    6. Flask请求和响应
    5. Flask模板
    FW:Software Testing
    What is the difference between modified duration, effective duration and duration?
    How to push master to QA branch in GIT
    FTPS Firewall
    Query performance optimization of Vertica
    (Forward)5 Public Speaking Tips That'll Prepare You for Any Interview
    (转)The remote certificate is invalid according to the validation procedure
    Change
  • 原文地址:https://www.cnblogs.com/senior-engineer/p/7831295.html
Copyright © 2011-2022 走看看