我了解 C 程序(堆栈、堆、函数调用等)的内存是如何组织的。现在,我真的不明白所有这些东西在面向对象语言(更具体地说,C++)中是如何工作的。
我知道每当我使用new关键字时,对象的空间都会分配到堆上。
我对此的一些基本问题是:
1)在程序执行期间类定义是否存储在内存中的某处?
2)如果是,那么它存储在哪里以及如何存储。如果不是,那么在运行时如何调度函数(在虚拟/非虚拟函数的情况下)。
3)当一个对象被分配内存时,关于该对象的所有细节都存储在其中吗?(它属于哪个类,成员函数,公共私有变量/函数等)
所以基本上,有人可以解释一下面向对象的代码是如何在编译之后/期间转换的,以便实现这些 OOP 功能吗?
我对 Java/C++ 很满意。因此,您可以使用任何一种语言来解释逻辑,因为它们都具有截然不同的特征。
另外,请添加任何参考链接,以便我也可以从那里阅读,以防万一出现进一步的疑问!
谢谢!