请问大家:构造函数可以是虚函数吗?

as19881 2010-06-12 10:44:01
请问大家:构造函数可以是虚函数吗?











...全文
127 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengzhixi 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 lvshaoqing 的回复:]


我只知道cfront的实现。 不过那个已经太久远了。
[/Quote]

简单的说下吧,因为毕竟实现和标准是有差距的,我也想深入的了解下
lvshaoqing 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 pengzhixi 的回复:]
引用 16 楼 lvshaoqing 的回复:
引用 10 楼 thefirstz 的回复:
不知道6楼读的是什么标准
想想也不太可能,如果允许是virtual,但不能被继承,那么virtual还有什么意义?内存空间太大需要程序来占用?


我读的是编译器原理。 在c99标准出来前。。。


那可以介绍下具体的实现。
[/Quote]


我只知道cfront的实现。 不过那个已经太久远了。
pengzhixi 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 lvshaoqing 的回复:]
引用 10 楼 thefirstz 的回复:
不知道6楼读的是什么标准
想想也不太可能,如果允许是virtual,但不能被继承,那么virtual还有什么意义?内存空间太大需要程序来占用?


我读的是编译器原理。 在c99标准出来前。。。
[/Quote]

那可以介绍下具体的实现。
lvshaoqing 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 thefirstz 的回复:]
不知道6楼读的是什么标准
想想也不太可能,如果允许是virtual,但不能被继承,那么virtual还有什么意义?内存空间太大需要程序来占用?
[/Quote]

我读的是编译器原理。 在c99标准出来前。。。
悲剧哥 2010-06-12
  • 打赏
  • 举报
回复
蹭分,不可以
pengzhixi 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 thefirstz 的回复:]
不知道6楼读的是什么标准
想想也不太可能,如果允许是virtual,但不能被继承,那么virtual还有什么意义?内存空间太大需要程序来占用?
[/Quote]

c++ 2003
mskmc_mc 2010-06-12
  • 打赏
  • 举报
回复
nononononononononononon not
lvshaoqing 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 pengzhixi 的回复:]
A constructor shall not be virtual (10.3) or static (9.4). A constructor can be invoked for a const,
volatile or const volatile object. A constructor shall not be declared const, volatile, or
const ……
[/Quote]

标准是对的。 只是编译器不一样这么做而已。 呵呵。
philipzeng 2010-06-12
  • 打赏
  • 举报
回复
NO.请参考http://topic.csdn.net/u/20100611/17/67e40b0b-5a5d-476f-aa3a-cb6384474fd1.html,多用论坛搜索。
昵称很不好取 2010-06-12
  • 打赏
  • 举报
回复
不知道6楼读的是什么标准
想想也不太可能,如果允许是virtual,但不能被继承,那么virtual还有什么意义?内存空间太大需要程序来占用?
lylm 2010-06-12
  • 打赏
  • 举报
回复
不可以,构造函数如果是虚的,就不清楚怎样构造对象了
chumeng1hao 2010-06-12
  • 打赏
  • 举报
回复
不可以
pengzhixi 2010-06-12
  • 打赏
  • 举报
回复
A constructor shall not be virtual (10.3) or static (9.4). A constructor can be invoked for a const,
volatile or const volatile object. A constructor shall not be declared const, volatile, or
const volatile (9.3.2). const and volatile semantics (7.1.5.1) are not applied on an object under
construction. Such semantics only come into effect once the constructor for the most derived object (1.8)
ends.

看来不搬标准是不行了
lvshaoqing 2010-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 thefirstz 的回复:]
不可以~~
[/Quote]

可以。 但是不能被继承。 c++标准规定。
xpston008 2010-06-12
  • 打赏
  • 举报
回复
析构函数好像可以,
构造函数不可以
sbdx86 2010-06-12
  • 打赏
  • 举报
回复
不可以的~
wade_2003 2010-06-12
  • 打赏
  • 举报
回复
不可以撒~~~~
pengzhixi 2010-06-12
  • 打赏
  • 举报
回复
昵称很不好取 2010-06-12
  • 打赏
  • 举报
回复
不可以~~
cattycat 2010-06-12
  • 打赏
  • 举报
回复
深入探索c++对象模型以cfront为例探讨的,上面也没说构造函数可以是虚函数。
标准确实规定不能是虚函数,虽然我没读过标准,楼上pengzhixi也给出了昨天讨论的链接和贴了标准。
应该有助于楼主理解了。
加载更多回复(1)

64,651

社区成员

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

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