首页文章正文

构造函数可以是虚函数,什么是虚函数

虚函数与实函数的区别 2023-12-30 23:15 492 墨鱼
虚函数与实函数的区别

构造函数可以是虚函数,什么是虚函数

1、为什么构造函数不可以是虚函数①从存储空间角度虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过构造函数不能是虚函数,析构函数可以且常常是虚函数。构造函数不能是虚函数存储空间角度虚函数的调用需要vptr 指针,而该指针存放在对象的内容空间中,需要

可以,虚函数底层实现原理(但是最好不要在构造和析构函数中调⽤) 可以,但是没有动态绑定的效果,⽗类构造函数中调⽤的仍然是⽗类版本的函数,⼦类中调⽤的仍然是⼦类版本的③构造函数不需要是虚函数,也不允许是虚函数,因为创建一个对象时我们总是要明确指定对象的类型,尽管我们可能通过实验室的基类的指针或引用去访问它。但析构却不

≥▽≤ 1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象的实即自定义类类型)的虚拟Create方法,而这个子类储存了相关类的meta

+^+ data,因此避免了“虚拟构造函数不

答:可以把基类析构函数定义为虚函数,在调用析构函数时,会根据指向的对象类型到它的虚函数表中找到对应的虚函数,此时找到的是派生类的析构函数,因此调用该析构函数;而调用派生类析构所以构造函数不能是虚函数。析构函数:可以原因:1、在多态当中,基类的方法被定义成虚函数,才可以通过基类指针动态调用派生类的方法,同理当我们delete 基类

˙0˙ 在C++中,构造函数不能被声明为虚函数。这是因为虚函数的调用是依赖于对象的类型的,而构造函数的目的是在对象创建的过程中进行初始化,这种初始化必须在对象的实际类型确定之前完成构造函数不可以是虚函数。因为类的虚函数表指针是在构造函数中初始化的,在虚表指针没有被正确初始化之前,我们不能调用虚函数。构造函数和析构函数也不能调用

后台-插件-广告管理-内容页尾部广告(手机)

标签: 什么是虚函数

发表评论

评论列表

51加速器 Copyright @ 2011-2022 All Rights Reserved. 版权所有 备案号:京ICP1234567-2号