首页 > 编程知识 正文

基类的析构函数是虚函数,虚析构函数的作用

时间:2023-05-04 10:08:52 阅读:27192 作者:668

我在面试中问了多态性的问题。 我这样回答。

多态性分为编译时多态性和运行时多态性。 编译时的多态性是通过函数的重载来实现的。 运行时多态性通过虚函数实现。 主要是子类重写父类的虚函数,并使用父类引用或父类指针调用。 对象的第一个地址包含指向虚函数表的指针。 虚函数表存储虚函数的地址。 对于程序集,直接调用虚函数表中的相应函数。 Base_L* b=new Son (; b-mm (; 或Son son; Base_L refBase=son; refBase.mm (; 面试官问了我一个问题。父类有一个虚函数,子类继承父类,子类有没有虚函数表犹豫了。

抵赖了很久。子类是有父类的虚函数表指针的子类是有父类的整个数据的

子类的对象内存中原本就存在父类的实例,当然包括父类的所有内容。

当子类继承父类并重写父类的虚函数时,子类对象上有多少虚函数表指针? 两个是子类,另一个是父类。 继承父类后,子类对象中有多少个虚函数表指针? 一个是父母。 语法分析是怎么回事class object {public: object () ) { value=10; } virtual void speak () cout'object:speak'endl; }虚拟到对象() cout ' object :3360到对象' endl; }隐私: int value; (; classonobject 3360 publicobject { public : son object (}~son object ) } { cout ' son object 3360:~son object ' endl } von }private:}; int main () { object* o=new SonObject ); 邻o-speak (; 电传o; 返回0; }如果不写,delete p; 时,只会调用父类的析构函数,派生类对象的空间未释放。

基类声明3358www.Sina.com/,其实子类也有析构函数。 子类理解为虚析构函数函数虚析构相当于支持多态性。 首先调用重写,然后调用子类析构函数

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。