c++ - c++如何分配类方法

标签 c++ class memory-management methods

基本上,我在互联网上找不到太多关于这个的信息,但我知道基本的类实例化是: -> operator new() -> 从某处分配内存 -> 构造函数 -> 为“数据类型”赋值

现在,我想知道的是,C++ 如何分配类的方法/函数而不是其成员。根据我的网络研究,这不会在 new() 中发生,因为它只是分配原始内存,据我所知,我还不太清楚如何在带有函数的构造函数中完成此操作(而不是比函数指针)。另外,我假设因为关键字static的存在,没有this关键字,它被分配为父类的一部分。这是如何以及在哪里发生的?

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

最佳答案

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

关键是当函数在代码中被调用时(假设范围问题得到了处理),而编译器只是将跳转语句插入到函数代码所在的地址。为了返回同一位置,还有一些其他操作正在发生。

所以当你说空间被分配时,它只是函数的字节码占用的空间加上表客栈编译器中的条目,它说这个函数存在于这个地址

不仅是 C++,每种编程语言(编译)几乎都是这种情况。

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

关于c++ - c++如何分配类方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17363383/

相关文章:

objective-c - 超强初始化对象

php裁剪非常大的图像

模板参数中参数 1 的 C++ 类型/值不匹配

python - 继承类;如何实现

C++ Unresolved external

java - 仍然有 NullPointerException 错误

c++ - 音频关闭时线程很慢

c++ - 指向类的双指针

C++ 复制构造函数的奇怪行为

c - 使用二级指针初始化 SequenceList