c ++如何分配类方法

时间:2013-06-28 11:12:46

标签: c++ class memory-management methods

基本上,我无法在互联网上找到关于此的更多信息,但据我所知,基本的类实例化是: - > operator new() - >从某个地方分配内存 - >构造函数 - >将值分配给“数据类型”

现在,我想知道的是,C ++如何分配类的方法/函数而不是其成员。根据我的网络研究,这不可能在new()中发生,因为它只是分配原始内存,而且据我所知,我还没有完全弄清楚如何在具有函数的构造函数中完成这项工作(而不是比函数指针)。此外,我假设由于存在关键字static,没有此关键字,它将被分配为父类的一部分。这种情况如何以及在何处发生?

另外,如果函数包含在类的内存中,函数sizeof()是否只给出了类及其成员的大小,还是包含了相关的函数?

1 个答案:

答案 0 :(得分:3)

编译代码编译器时会在原始代码中存储函数起始点的地址。该地址可以相对于程序的起始位置或绝对存储器地址。

关键是当代码中调用函数(假设范围问题得到处理)时,编译编译器时只需将跳转语句插入到函数代码所在的地址。要返回同一地点,还会进行其他一些操作。

所以当你说空间被分配时,它只是函数的字节码占用的空间加上表格编译器中的条目this function is present at this address

每种编程语言(编译)的情况几乎都是C++

至于你的另一部分:sizeof(type)返回类型的对象表示的字节大小,它基本上是其成员大小的聚合(如果我们省略由编译器进行优化的填充)。