zoukankan      html  css  js  c++  java
  • 虚函数

    /*虚函数*/

    /***********************************************************************
    虚函数建立在继承情况下的
    虚函数:一个成员函数(不包括构造函数和静态成员函数)前面有virtual关键字
    虚函数好处: 可以用一致的(相同的)方法,在不同种情况,完成不一样的实现
    用同样的接口,完成不同的实现
    虚函数写法:
      1.
    在基类和派生类中,有同名的函数,参数一样,返回值一样。那么在基类中
       
    此函数前加上virtual关键字,派生类(virtual)可加可不加
      2.
    调用,必须使用基类的指针或则引用完成调用
    如何判断函数去哪里?
      pb->Fun();
     
    基类的指针调用函数FUN
        1
    如果FUN是非虚成员函数,那么执行 基类::FUN()
        2
    如果FUN是虚函数
          a.
    如果基类指针指向的是基类对象,执行基类::FUN()
          b.
    如果基类指针指向的是派生类对象,执行派生类::FUN()
    ***********************************************************************/


    #include "stdafx.h"
    #include <iostream.h>

    class A
    {
    public:
        virtual void Show()
        {
            cout << "A::Show()" << endl;
        }
    };

    class B : public A
    {
    public:
        virtual void Show()
        {
            cout << "B::Show()" << endl;
        }
    };

    void FunShow( A* pA )
    {
        pA->Show();
    }

    int main(int argc, char* argv[])

        B theB;
        A theA;
       
        A* pA = NULL;
       
        //
    如果FUN是虚函数
        pA = &theA;   
        //a.
    如果基类指针指向的是基类对象,执行基类::FUN()
        pA->Show();

        //
    如果FUN是虚函数
        pA = &theB;
        //b.
    如果基类指针指向的是派生类对象,执行派生类::FUN()
        pA->Show();
       
        //
    虽然没有数据成员,但大小都为4
        //
    因为virtual 其实就是一个函数指针数组的首地址
        //
    一个类中有几个虚函数,数组里边就有几个虚函数地址

        cout << "
    基类对象大小" << sizeof(A) << endl;
        cout << "
    派生对象大小" << sizeof(B) << endl;

       
        //
    基类的指针调用函数FUN pb->Fun();   
        //1
    如果FUN是非虚成员函数,那么执行 基类::FUN()
        //2
    如果FUN是虚函数       
        //a.
    如果基类指针指向的是基类对象,执行基类::FUN()
        //b.
    如果基类指针指向的是派生类对象,执行派生类::FUN()


        return 0;
    }

  • 相关阅读:
    cin 文件结束符
    C++ 代码折叠
    QTP/UFT 11.51 发布,支持Windows8和IE10等新特性
    QTP11.5测试手机 UFT Mobile
    Ranorex 4.0.2发布,支持Firefox19
    Selenium的WebDriver API 提交 W3C 标准化
    UFT/QTP11.5新特性
    2012年总结与2013年展望
    《TestComplete自动化测试实践》培训课程
    QTP11.5(HP UFT 11.5)下载地址
  • 原文地址:https://www.cnblogs.com/w413133157/p/1657069.html
Copyright © 2011-2022 走看看