zoukankan      html  css  js  c++  java
  • C++ 类的继承、虚拟继承、隐藏、占用空间

    主函数:

     1 #include <iostream>
     2 #include "test.h"
     3 #include "testfuc.h"
     4 using namespace std;
     5 
     6 int main(void)
     7 {    
     8     a *p=new b();
     9 
    10     p->fuc();
    11 
    12     cout<<"指针p占用空间"<<sizeof(p)<<endl;
    13     cout<<"类占用空间"<<sizeof(a)<<endl;
    14 
    15     delete p;
    16 
    17     return 0;
    18 }
    test.h
     1 #ifndef TEST_H
     2 #define TEST_H
     3 
     4 class a
     5 {
     6 public:
     7     a();
     8     ~a();
     9     void virtual fuc();
    10 };
    11 
    12 class b:public a
    13 {
    14 public:
    15     b();
    16     ~b();
    17     void fuc();
    18 };
    19 
    20 #endif
    testfuc.h
     1 #ifndef testfuc_h
     2 #define testfuc_h
     3 
     4 #include <iostream>
     5 using namespace std;
     6 
     7 a::a()
     8 {
     9     cout<<"a的构造函数"<<endl;
    10 }
    11 
    12 a::~a()
    13 {
    14     cout<<"a的析构函数"<<endl;
    15 }
    16 
    17 b::b()
    18 {
    19     cout<<"b的构造函数"<<endl;
    20 }
    21 b::~b()
    22 {
    23     cout<<"b的析构函数"<<endl;
    24 }
    25 
    26 void a::fuc()
    27 {
    28     cout<<"a的函数"<<endl;
    29 }
    30 
    31 void b::fuc()
    32 {
    33     cout<<"b的函数"<<endl;
    34 }
    35 #endif

    运行结果:

    a的构造函数

    b的构造函数

    b的函数

    指针p占用空间8

    类占用空间8   //每个虚函数的类都要有8字节(64位系统)指针指向自己的虚函数表

    a的析构函数

     

    a *p=new b();
    改为
    b *p=new b();

    运行结果:

    a的构造函数

    b的构造函数

    b的函数

    指针p占用空间8

    类占用空间8

    b的析构函数

    a的析构函数

     

    将virtual去掉 a *p=new b(); 

    运行结果:

    a的构造函数

    b的构造函数

    a的函数

    指针p占用空间8

    类占用空间1

    a的析构函数

     

    将virtual去掉 b *p=new b(); 

    运行结果:

    a的构造函数

    b的构造函数

    b的函数

    指针p占用空间8

    类占用空间1

    b的析构函数

    a的析构函数

     

    
    
  • 相关阅读:
    点击按钮倒计时
    js实现-小框框全选
    CSS文字,文本,背景,盒模型等记录
    xps9560黑苹果展示
    面试——谈谈你对抽象和接口的理解(小知识大考点)
    谈谈你对Java 面向对象思想的理解
    谈谈你对Java 平台的理解
    HashMap1.7 问题总结
    2.3.2 InnoDB内存
    2.3 InnoDB 体系架构
  • 原文地址:https://www.cnblogs.com/bindong/p/5883608.html
Copyright © 2011-2022 走看看