免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3854 | 回复: 18
打印 上一主题 下一主题

[函数] 编译器是否会提供一个缺省构造函数? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-28 07:34 |只看该作者 |倒序浏览
看primer C++
上面说一般情况上编译器是不会提供一个缺省的构造函数的
我理解的意思是说,假如一个简单的类当实例化时候,只靠一个new size就能解决的话编译器就不必提供一个缺省的构造函数.因为它不用初始化虚函数表,不用初始化基类,没必要专门弄个函数来进行处理,只靠new分配一下成员变量的空间就可以了.
但是看effective c++条款45,又说对于一个空类,编译器会给出一个缺省的构造函数.两本书好象有点矛盾了.难道这里给出的构造函数是为了做一些处理满足sizeof(空类)=1?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-05-28 09:40 |只看该作者
primer C++这个是C++ primer?
具体在哪一章哪一节?

论坛徽章:
0
3 [报告]
发表于 2007-05-28 10:36 |只看该作者
第三版的14.2
练习14.1(d)

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2007-05-28 11:35 |只看该作者
我看了一下,应该是c++ primer(3rd)这里说得有误。
在第四版中已经改正了他的说法。
The compiler generates a default constructor automatically only if a class defines no constructors.

论坛徽章:
0
5 [报告]
发表于 2007-05-28 11:47 |只看该作者
多谢
我去找第四版看看
网上有哪里能找到第四版么?

论坛徽章:
0
6 [报告]
发表于 2007-05-28 15:06 |只看该作者
我记得是这些情况,满足下面条件之一,编译器就会添加一个构造函数。
1,有虚函数。构造函数处理虚函数表。
2,成员有虚函数。构造函数处理成员的虚函数表。
3,虚拟继承而来。构造函数处理虚拟基类。
4,成员有虚拟继承父类。构造函数处理虚拟基类。

[ 本帖最后由 yuanchengjun 于 2007-5-29 17:29 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2007-05-28 15:20 |只看该作者
请看《Inside C++ Model》

论坛徽章:
0
8 [报告]
发表于 2007-05-28 16:55 |只看该作者
inside c++ object model

论坛徽章:
0
9 [报告]
发表于 2007-05-29 11:44 |只看该作者
Inside C++ Model看了
如果按上面的說法
就是說對于一個空類
是不會生成一個默認的構造函數了?

论坛徽章:
0
10 [报告]
发表于 2007-05-29 14:31 |只看该作者
原帖由 feasword 于 2007-5-28 19:44 发表
Inside C++ Model看了
如果按上面的說法
就是說對于一個空類
是不會生成一個默認的構造函數了?


为什么不会?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP