Advertisement

静态成员函数总结!(待续)

阅读量:

【第一个问题,静态成员函数在内存中的具体存储位置是哪里?
要解答这一疑问,首先需要对C++的内存管理机制进行简要说明。

C++程序在运行时的内存布局通常被划分为四个区域:全局数据区(data area)、代码区(code area)、栈区(stack area)以及堆区(heap area),也被称为自由存储区。全局数据区用于存放全局变量、静态数据以及常量;所有的类成员函数和非成员函数的代码均存储于代码区;在函数执行过程中,局部变量、函数参数、返回值以及返回地址等信息会被分配到栈区;而其余未被明确划分的空间则统称为堆区。根据以上描述可知,在类定义阶段,类的成员函数被存放在代码区内,而类的静态成员变量则在类定义时就已经在全局数据区内分配了内存空间,因此它属于整个类。至于非静态成员变量,则是在类实例化的过程中(即构造对象时)才在栈区或堆区内为其分配内存空间,并且每个对象都会拥有独立的一份拷贝,因此它属于具体的对象。
[<>
静态成员函数本质上仍属于成员函数的一种,因此其与常规的成员函数一样均位于代码区内。既然它们都被存放在代码区内,那么可以得出一个结论:如果未调用到类中的普通成员变量,则在类实例化之前,所有的成员函数均可由该类直接调用。(需要注意的是,这种情况下必须不涉及普通成员变量的使用。因为普通成员变量是在实例化过程中被放置于栈区内的)
实验

全部评论 (0)

还没有任何评论哟~