zoukankan      html  css  js  c++  java
  • C++对象内存布局①测试虚函数表属于类

    C++对象内存布局--①测试虚函数表属于类

    测试1:同一个类的多个对象共享同一张虚函数表。

    
    
    

    //虚函数表.cpp
    //2010年8月18日
    //测试虚函数表,说明虚函数表属于类所有。同一个类的多个对象共享同一张虚函数表
    //VS编译器
    #include <iostream>
    using   namespace   std;
    
    class Base
    {
        public :
            Base(int a = 0):a(a)
            {
                cout << "Base::base()" << endl;
            }
            virtual ~Base()
            {
                cout << "Base::~Base" << endl;
            }
            virtual void show()
            {
                cout << "Base::show()" << endl;
            }
        private:
            int a;
    };
    
    int main()
    {
        Base aobj(10);
        typedef void (__thiscall *fun)(void*pThis);//非常重要
        int** p = (int**)&aobj;
        cout << "对象大小     = " << sizeof(aobj) << endl;
        cout << "虚函数表指针 = " << p[0] << endl;
        cout << "成员变量   a = " << p[1] << endl;
        cout << "通过指针调用虚函数表中的函数" << endl;
        ((fun)(p[0][1]))(p);//调用show函数
    
        cout << endl << "测试同一个类的另一个对象" << endl;
        Base bobj(20);
        int** pp = (int**)&bobj;
        cout << "对象大小     = " << sizeof(bobj) << endl;
        cout << "虚函数表指针 = " << pp[0] << endl;
        cout << "成员变量   a = " << pp[1] << endl;
        cout << "通过指针调用虚函数表中的函数" << endl;
        ((fun)(pp[0][1]))(pp);
        system("pause");
        return 0;
    }
    /*
    Base::base()
    对象大小     = 8
    虚函数表指针 = 0041C2B0
    成员变量   a = 0000000A
    通过指针调用虚函数表中的函数
    Base::show()
    
    测试同一个类的另一个对象
    Base::base()
    对象大小     = 8
    虚函数表指针 = 0041C2B0
    成员变量   a = 00000014
    通过指针调用虚函数表中的函数
    Base::show()
    请按任意键继续. . .
    Base::~Base
    Base::~Base
    */
    
    
  • 相关阅读:
    项目职责
    hibernate配置文件hibernate.cfg.xml的详细解释
    Hibernate环境搭建
    struts2标签使用详解
    EL表达式
    getparameter()和getattribution()的区别的 java详细
    形式参数和实在参数
    JSTL详解实例
    论文ei,sci检索,JCR-SCI分区,中科院分区连接
    随机森林实例
  • 原文地址:https://www.cnblogs.com/cswuyg/p/1804069.html
Copyright © 2011-2022 走看看