zoukankan      html  css  js  c++  java
  • C++多态,虚函数,虚函数表,纯虚函数

    1、多态性 
      指相同对象收到不同消息或不同对象收到相同消息时产生不同的实现动作。

      C++支持两种多态性:编译时多态性,运行时多态性。 
       a、编译时多态性:通过重载函数实现 ,模板(2次编译)
       b、运行时多态性:通过虚函数实现。 

    2、覆盖,隐藏,重载

       重载,静态多态,一个类里面
       覆盖, 虚函数 ,同参数,同名称,同返回
       隐藏 :

       1.1 基类非虚函数,子类与父类同名称(可能覆盖一大片父类函数)

     1.2 基类非虚函数,派生类声明为virtual ,参数相同,此时virtual关键字失效

        2.2 基类虚函数,     派生类不使用virtual, 形参不同,则丢失多态

        2.3 基类和派生类都是 虚函数, 形参相同,返回值不同,报错

    //////////////////////////

    多态典型应用,抽象工厂模式,

    ///////////////////////////////////////////////////////////

    虚函数表,动态绑定如何实现?

    多重继承,一个基类(含虚函数)会有一个虚表指针,继承后,自己的虚函数放在第一个虚表后面。

    D:A,B,C; 强转D对象为A,B,C的时候,地址不一样

     ////////////////////////////////////

    构造函数与析构函数是否能定义为虚函数?能否抛出异常?

    构造的时候必须要知道构造的东西结构吧,虚个鸡毛。。。析构的时候需要动态析构吧,不然工厂模式只析构基类,内存不是炸了? 构造和析构运行到一半,抛出异常,你构造个办成品?释放一半内存?可能以前真有人写出这种代码吧。。

    构造函数和析构函数中能调用虚函数吗?

    调用后不会使用(动态联编)多态特性,不建议使用!

  • 相关阅读:
    内存泄漏 Memory Leaks 内存优化 MD
    Handler Thread 内部类引起内存泄露分析
    为什么不取消注册BroadcastReceiver会导致内存泄漏
    WebChromeClient 简介 API 案例
    WebViewClient 简介 API 案例
    java.net.URI 简介 文档 API
    android.net.Uri 简介 API
    RV 多样式 MultiType 聊天界面 消息类型 MD
    JS函数声明与定义,作用域,函数声明与表达式的区别
    CSS中table tr:nth-child(even)改变tr背景颜色: IE7,8无效
  • 原文地址:https://www.cnblogs.com/sofard/p/9819848.html
Copyright © 2011-2022 走看看