社区
C++ 语言
帖子详情
类的构造函数可以是虚函数吗
pan2009
2003-08-31 11:03:02
类的构造函数可以是虚函数吗
...全文
80
5
打赏
收藏
类的构造函数可以是虚函数吗
类的构造函数可以是虚函数吗
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ehhl
2003-08-31
打赏
举报
回复
不可以!!
lang2000
2003-08-31
打赏
举报
回复
当然是不可以
sevecol
2003-08-31
打赏
举报
回复
不可以.
alan118
2003-08-31
打赏
举报
回复
不可以
所谓的虚构造函数是一种设计模式,不是c++语法
同意楼上观点,一个对象还没有产生,让函数动态绑定到那里?
liyunjie
2003-08-31
打赏
举报
回复
我这几天也琢磨此问题,类的构造函数是虚函数没有意义,因为虚函数主要是针对对象的,而构造函数是在对象产生之前运行的。
C++
构造函数
和析构函数可以是
虚函数
嘛?
简单总结就是:
构造函数
不可以是
虚函数
,而析构函数可以且常常是
虚函数
。
构造函数
不能是
虚函数
1. 从vptr角度解释
虚函数
的调用是通过
虚函数
表来查找的,而
虚函数
表由
类
的实例化对象的vptr指针(vptr可以参考C++的
虚函数
表指针vptr)指向,该指针存放在对象的内部空间中,需要调用
构造函数
完成初始化。如果
构造函数
是
虚函数
,那么调用
构造函数
就需要去找vptr,但此时vptr还...
构造函数
可以为
虚函数
吗?
面试管问你,
构造函数
可以为
虚函数
吗?如果你知道,你可以勇敢的反问,能不要问这么简单的问题吗?如果你不知道,请记住这个答案-----不能! 以下是copy一个CSDN大佬写的博客,刚好我是后者! 从存储空间角度
虚函数
对应一个vtable,可是这个vtable其实是存储在对象的内存空间的。 那么问题来了,如果
构造函数
是
虚函数
,就要通过vtable来调用,可是对象空间还没有实例化,也就是内存空间还没有,无法找到vtable,所以
构造函数
不能是
虚函数
。 从使用角度
虚函数
主要用于在信息不全
构造函数
可以是
虚函数
吗?不看看你就亏大了
首先,
构造函数
是不能为
虚函数
的 调用
构造函数
后, 才能生成一个对象。 假设
构造函数
是
虚函数
,
虚函数
存在于
虚函数
表中, 而去找
虚函数
表又需要
虚函数
指针, 而
虚函数
表指针又存在于对象中, 这样就矛盾了: 都没有生成对象, 哪有什么
虚函数
表指针呢? 那么问题又来了,析构函数可以是
虚函数
吗? 答:可以 把基
类
析构函数定义为
虚函数
,在调用析构函数时,会根据指向的对象
类
型到它的
虚函数
表中找到对应的
虚函数
,此时找到的是派生
类
的析构函数,因此调用该析构函数;而调用派生
类
析构函数之后会再调用基
类
的析构函数,因此不会导致内
构造函数
可以是
虚函数
吗?
虚函数
对应一个虚指针,虚指针其实是存储在对象的内存空间的。如果
构造函数
是
虚函数
,就需要通过
虚函数
表中对应的
虚函数
指针(编译期间生成属于
类
)来调用,可对象目前还没有实例化,也即是还没有内存空间,何来的虚指针,所以
构造函数
不能是
虚函数
;
虚函数
的作用在于通过父
类
的指针或者引用来调用它的成员函数的时候,能够根据动态
类
型来调用子
类
相应的成员函数。而
构造函数
是在创建对象时自动调用的,不可能通过父
类
的指针或者引用去调用,所以
构造函数
不能是
虚函数
; ———————————————— 版权声明:本文为CSDN博主「清水寺扫
构造函数
和析构函数可以是
虚函数
吗
1.
构造函数
必不可以是
虚函数
2.析构函数可以是
虚函数
,并且有时必须是
虚函数
3.
构造函数
会生成
虚函数
表,
构造函数
要是
虚函数
连
虚函数
表都没有哪里来的
虚函数
3.
构造函数
代表了该
类
的内存结构(实际
类
型),
虚函数
就无法知道实际
类
型 4.析构函数不仅可以是
虚函数
,有时还必须是
虚函数
,因为基
类
相对于子
类
,基
类
的析构函数若不是
虚函数
,子
类
析构函数就会即调用自己的析构又调用基
类
的。 ...
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章