构造函数可以是虚函数吗?

yiezi0919 2007-06-24 09:31:17
请问大家:构造函数可以是虚函数吗?
为什么?请回答具体点。
...全文
5097 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishengkai 2011-11-08
  • 打赏
  • 举报
回复
不可以 构造函数不可能为虚 构造函数是用来创建一个对象的 必须要明确知道所要创建的对象是个什么东西
LIN 2011-11-08
  • 打赏
  • 举报
回复
mark
dream17953 2010-06-03
  • 打赏
  • 举报
回复
构造函数 好像可以吧。
longfeihufengyun 2010-06-03
  • 打赏
  • 举报
回复
mark
嘎文 2010-04-01
  • 打赏
  • 举报
回复
语法上没说不可以,之前有人问过这个问题,我试过,程序可以通过编译,而且能运行,只不过不知道,类复杂了,出现虚的构造函数会有什么结果。
N喽的类似f() = 0;的写法是纯虚函数,跟虚函数不完全一样的。
ShineShineRedStar 2010-04-01
  • 打赏
  • 举报
回复
ls们说得很清楚了,我来总结下:不可以。
johndotcom 2010-04-01
  • 打赏
  • 举报
回复
不可以,也没有任何意义。构造对象的偶合是很高的,factory模式是解决这个问题的其中一个方法。
冬雨在路上 2010-04-01
  • 打赏
  • 举报
回复
不可以,构造函数主要用于初始化吧
尹立 2007-07-11
  • 打赏
  • 举报
回复
要是把构造函数写成虚拟的就会有这个错误
'inline' is the only legal storage class for constructors
要是把构造函数设置成虚拟的,就算编译不出问题,那子类也不允许去重写这个函数
这样看来好像一点意义都无

个人见解~~
  • 打赏
  • 举报
回复
mark!
Champagne_meng 2007-07-11
  • 打赏
  • 举报
回复
不可以。构造函数是独一无二的。
sopecj_seu 2007-07-10
  • 打赏
  • 举报
回复
不可以,构造函数主要用于初始化吧?
jinwei1984 2007-07-10
  • 打赏
  • 举报
回复
mark
tricolors 2007-07-10
  • 打赏
  • 举报
回复
学习
gernal_dn 2007-07-10
  • 打赏
  • 举报
回复
不可以!道理很简单:虚函数的入口,是在生成对象时填入VMT表里的,而构造函数是用于对象初时化的,两者在逻辑上存在层次关系,就是说,逻辑上这个VMT表是由构造函数填写的(当然,这个操作是隐含的,构造函数内并没有相应代码,这些代码在统一的对象生成机制里),所以,逻辑上,构造函数无法虚化。
corder_li 2007-07-10
  • 打赏
  • 举报
回复
不可以.
构造函数只作用于该类对象,负责初始化.如果有虚拟的话,A类的对象用B类构造函数初始化,这显然是不合适的
白錵錵 2007-07-10
  • 打赏
  • 举报
回复
还不结贴.等P呢.
canybox 2007-07-09
  • 打赏
  • 举报
回复
N楼以上的一句话就可以了;

虚函数的目的在于多态,而构造函数用于构造本类的对象实体,因此对它进行多态处理是很不恰当的。
tmhlcwp 2007-07-09
  • 打赏
  • 举报
回复
刚看了thinking in c++,上面讲的基本清楚
yiezi0919 2007-06-30
  • 打赏
  • 举报
回复
谢谢大家!
加载更多回复(17)

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧