我对C++的坚果和螺栓很感兴趣,我想知道在实例化对象时实际发生了什么变化.我特别感兴趣的是,如果函数随后被添加到内存中,如果它们来自运行时,或者根本不存储在内存中.
如果有人能指导我在C和C++的一些核心螺栓上找到一个好的网站,我也会喜欢它.
谢谢,乔
不确定一个好的网站,但Inside C++对象模型是一本非常好的书.
至少在通常情况下,成员函数完全独立于类的任何实例.相反,类的实例是包含对象的(非静态)数据成员的结构.如果该类至少具有虚函数,则该对象还将包含指向vtable的指针,该指针基本上是指向函数的指针数组.
当调用成员函数时,该对象的地址作为隐藏参数传递给函数(许多编译器为它保留一个寄存器),并在函数中将其称为this.
一个常见的情况是:
operator new。这个函数很可能已经在内存中了,它经常被需要。这种按需加载机制的优点是,CPrinter如果用户从未打算打印其文档,操作系统可以避免加载类代码。