C/C++
文章平均质量分 74
aurorahhmllm
这个作者很懒,什么都没留下…
展开
-
构造函数相关
当使用 `delete` 删除指向派生类对象的基类指针时,首先会调用派生类的析构函数,然后调用基类的析构函数。这样可以确保派生类中的资源先被释放,然后是基类中的资源。当基类的析构函数被声明为虚函数时,这确保了通过基类指针删除派生类对象时,能够正确地调用派生类的析构函数,然后才是基类的析构函数。发生在继承中,子类可以重新定义基类的虚函数,派生类的函数覆盖了基类的虚函数(重写的函数必须具有与基类虚函数。子类的函数与基类的虚函数名称一致,但是参数列表不匹配,故子类的函数不会重写基类的虚函数,而是隐藏了它。原创 2024-09-07 19:40:46 · 289 阅读 · 0 评论 -
多态(虚函数、纯虚函数、虚函数表)
随后,当执行到派生类的构造函数时,如果派生类有自己的虚函数表(通常是因为派生类重写了基类的虚函数或添加了新的虚函数),则对象的 vptr 会被更新为指向派生类的虚函数表。不同对象vptr共享同一片内存,一个vptr变成null会影响其他的 和深拷贝,重新分配新内存,不会影响),但是指向的地址是一样的(都是指向类的虚函数表,也就是会共享相同的虚函数表指针内容)建议进行深拷贝。,存储在对象中的指针vptr,指向该对象所属类的虚函数表,就是指向虚函数表的指针。虚函数表是虚函数地址的数组,指向代码区中的地方。原创 2024-09-01 23:00:30 · 665 阅读 · 0 评论