c++ 一个类 创建多个实例对象,内存示意图

(空类中 定义成员变量 类(实例化的对象)整体占 一个字节,

成员变量不在实例化对象的内存中,但是要有地址

空类中定义 virtual成员变量 类整体占4个字节)

每实例化创建同一个类的对象,都需要为这个对象分配一块内存。这些对象所占用的内存是各自独立的。

但是对于类的成员函数来说,它可以被一个类的多个对象实例共享使用。

成员函数的代码只存储一份,它们被存储在程序的代码段中,并且在每个对象实例中共享。当调用成员函数时,实际上是通过对象的指针或引用来访问这个函数。因此,并不会在每个对象实例的内存中复制一份成员函数的拷贝,而是共享同一份代码。

  +-----------------+
  |   Object 1      |
  |   Member Data   |
  |                 |
  +-----------------+
  |   Object 2      |
  |   Member Data   |
  |                 |
  +-----------------+
  |   Object 3      |
  |   Member Data   |
  |                 |
  +-----------------+
  |   Shared        |
  |   Member Function|
  |   (code segment)|
  +-----------------+

//file1.h
class File1{
    public:
        static int x;  
};

//file1.cpp
int File1::x = 1; 

//file2.h 
class File2{
    public: 
        static int x;
};

//file2.cpp
int File2::x = 2;

//file3.h
class File3{
    public:
        static int x;  
};

//file3.cpp
int File3::x = 3;
File1::x = 10; //访问file1.h中的x
File2::x = 20; //访问file2.h中的x
File3::x = 30; //访问file3.h中的x
      进程内存空间

     +------------+
     |   代码段   |
     +------------+

     +------------+ 
     |   堆区     |
     +------------+

     +------------+
     |   栈区     | 
     +------------+
           
     +------------+
     |  数据段    |
     +------------+

     数据段
|
|--- File1类静态变量
|    |--- x
|
|--- File2类静态变量  
|    |--- x
|
|--- File3类静态变量
      |--- x

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值