【发布时间】:2013-06-28 11:12:46
【问题描述】:
基本上,我在互联网上找不到太多关于此的信息,但我知道基本的类实例化是: -> operator new() -> 从某处分配内存 -> 构造函数 -> 为“数据类型”赋值
现在,我想知道的是,C++ 如何分配类的方法/函数而不是其成员。根据我的网络研究,这不会在 new() 中发生,因为它只是分配原始内存,而且据我所知,我还没有完全弄清楚如何在带有函数的构造函数中做到这一点(而是比函数指针)。另外,我假设由于关键字static的存在,没有这个关键字,它被分配为父类的一部分。这是如何以及在哪里发生的?
另外,如果函数包含在类的内存中,函数 sizeof() 是只给出类及其成员的大小,还是还包含相关函数?
【问题讨论】:
-
虚函数放在一个[v-table][1] [1]中:stackoverflow.com/questions/1963926/…
-
您认为创建对象时应该如何处理函数?函数的代码已经存在,在你的二进制文件中,这就是编译器的用途。
-
操作系统应用程序加载器(也可能是虚拟分页内存管理器)会执行此操作。不太明白你的问题?
-
如果您没有操作系统应用程序加载器或分页内存管理器怎么办 - 换句话说,如果您正在构建内核等。
-
正如@PlasmaHH 指出的,这是编译器和链接器的工作。这同样适用于没有 OS loader 运行的固件。
标签: c++ class memory-management methods