zoukankan      html  css  js  c++  java
  • 相同类的对象是否共享虚函数表,不同类呢

    实践出真理!

    #include<stdio.h>
    #include<iostream>
    class A{
    public:A();
           virtual~A();
           virtual void fun1(){
               printf("A:fun1");
           }
           virtual void fun2(){
               printf("A:fun2");
           }
    };
    A::A(){}
    A::~A(){
        printf("Delete class A
    ");
    }
    
    class B : public A
    {
    public:B();
           ~B();
           void fun1(){
               printf("A:fun1");
           }
           void fun2(){
               printf("A:fun2");
           }
    };
    
    B::B(){ }
    B::~B(){
        printf("Delete class B
    ");
    }    
    
    
    int main(){
    
        A *a=new B;
        A *a2=new B;
    
        A *a3=new A;
    
        delete a;
        //delete c;
        //delete d;
        return 0;
    }
    View Code

    a,a2的虚函数表地址一样,说明想同类的对象共享虚函数表(这个比较好理解,因为,同一个类,调用的函数都是一样的,虚函数表占用要内存空间,一样类的函数表就没必要另外在占用内存了,共享了就行)

    而a3是不同地址,所以不同类的对象不共享虚函数表

  • 相关阅读:
    Single Number II
    Pascal's Triangle
    Remove Duplicates from Sorted Array
    Populating Next Right Pointers in Each Node
    Minimum Depth of Binary Tree
    Unique Paths
    Sort Colors
    Swap Nodes in Pairs
    Merge Two Sorted Lists
    Climbing Stairs
  • 原文地址:https://www.cnblogs.com/huhuuu/p/3454465.html
Copyright © 2011-2022 走看看