社区
资源
帖子详情
请问构造函数中能否调用虚函数,为什么?
freebeekf
2002-11-09 01:11:25
help
...全文
39
1
打赏
收藏
请问构造函数中能否调用虚函数,为什么?
help
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dominolili
2002-11-09
打赏
举报
回复
不行,对象没有构造好
构造函数
中
为什么不能
调用
虚函数
?
构造函数
中
为什么不能
调用
虚函数
?
构造函数
调用
层次会导致一个有趣的两难选择。试想:如果我们在
构造函数
中
并且
调用
了
虚函数
,那么会发生什么现象呢?在普通的成员函数
中
,我们可以想象所发生的情况——
虚函数
的
调用
是在运行时决定的。这是因为编译时这个对象并不能知道它是属于这个成员函数所在的那个类,还是属于由它派生出来的某个类。于是,我们也许会认为在
构造函数
中
也会发生同样的事情。 然而,情况并非如此。对于在...
构造函数
为什么不能为
虚函数
?
构造函数
为什么不能
调用
虚函数
?
构造函数
与
虚函数
请问
构造函数
中
的能不能
调用
虚方法?
最好不要在
构造函数
中
调用
虚方法,从语法上讲,
调用
完全没有问题;但是从效果上看,往往不能达到目的。 派生类对象构造期间进入基类的
构造函数
时,对象类型变成了基类类型,而不是派生类类型。 同样,进入基类析构函数时,对象也是基类类型。 所以,
虚函数
始终是仅仅
调用
基类的
虚函数
(如果是基类
调用
虚函数
),不能达到多态的效果,所以放在
构造函数
中
是没有意义的,而且往往不能达到本来想要的效果。 ...
C++面试题1:
构造函数
和虚构函数
中
能否
调用
虚函数
?
C++面试题1:
构造函数
和虚构函数
中
能否
调用
虚函数
?
构造函数
跟虚构函数里面都可以
调用
虚函数
,编译器不会报错。C++ primer
中
说到最好别用由于类的构造次序是由基类到派生类,所以在
构造函数
中
调用
虚函数
,
虚函数
是不会呈现出多态的类的析构是从派生类到基类,当
调用
继承层次
中
某一层次的类的析构函数时意味着其派生类部分已经析构掉,所以也不会呈现多态因此如果在基类
中
声明的纯
虚函数
并且在基类的析构函数
构造函数
、析构函数能否
调用
虚函数
从理论上来讲,
构造函数
和析构函数是可以
调用
虚函数
的,但实际应用上不应该
调用
在Effective C++09
中
有说明了一这点,当派生类继承了基类的时候,生成一个派生类对象的时候,首先会
调用
基类的
构造函数
生成基类的部分,但
构造函数
里面如果有
虚函数
,这时候
调用
的是基类的
虚函数
,不会下降到派生类的阶层,可以从以下几个角度理解 在执行基类
构造函数
的时候,派生类的成员变量完全未初始化,那么如果此时
调用
的是派生类的
虚函数
,如果里面
调用
了派生类的成员变量,那么就导致出现错误 派生类对象在基类构造期间,会被认为是一个基类
资源
2,586
社区成员
18,441
社区内容
发帖
与我相关
我的任务
资源
VC/MFC 资源
复制链接
扫一扫
分享
社区描述
VC/MFC 资源
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章