struct A {
var a:Int = 2
func f()->Int {
return 2*a
}
}
var obj = A()
obj.f()obj的大小为8个字节。如果我添加了新的属性,大小就会改变。这很好。
我想知道编译器是如何关心函数的内存的。无论结构中是否有功能,大小都是一样的。但功能也是信息,我想它也应该占用内存(也许我错了)。这个过程进行得怎么样了?
如果你能推荐我的主题名,让我能读懂,我将不胜感激。
谢谢
发布于 2022-08-27 14:26:03
即使在源代码出现时,函数f似乎嵌套在struct A中,但这并不是编译后的二进制文件中实际发生的情况。
f只有一个实现,它在A的所有实例中都是共享的。它存储在全局程序文本中,不像任何其他的免费函数。
虽然C++关注焦点,但您可以获得更多关于https://en.wikipedia.org/wiki/Virtual_method_table的信息
https://stackoverflow.com/questions/73511645
复制相似问题