问个关于构造函数的问题?

haipeng31 2009-02-12 09:06:45
为什么data member of a class type that does not have a default constructor必须用constructor intializer?
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sxbwelcome 2009-02-21
  • 打赏
  • 举报
回复
对象与一般的变量还是有很大的区别:对象实现了封装,一般不允许直接访问对象的数据成员【一般都设置为private】
那么对他的初始化就不能通过这种形式进行:对象名.成员名=……【结构体变量可以这么使用】
所以只能通过两种途径:构造函数和成员初始化列表
因为构造函数可以任意访问类的数据成员
hyldream 2009-02-21
  • 打赏
  • 举报
回复
up
wzg112 2009-02-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 happyboxman 的回复:]
1.C++规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象。

2.若没有提供任何构造函数,那么c++提供自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅仅负责创建对象而不做任何赋值操作。

3.只要类中提供了任意一个构造函数,那么c++就不在自动提供默认构造函数。

4.类对象的定义和变量的定义类似,使用默认构造函数创建对象的时候,如果创建的是静态或者是全局对象,则对象的…
[/Quote]
很详细!up
happyboxman 2009-02-12
  • 打赏
  • 举报
回复
1.C++规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象。

2.若没有提供任何构造函数,那么c++提供自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅仅负责创建对象而不做任何赋值操作。

3.只要类中提供了任意一个构造函数,那么c++就不在自动提供默认构造函数。

4.类对象的定义和变量的定义类似,使用默认构造函数创建对象的时候,如果创建的是静态或者是全局对象,则对象的位模式全部为0,否则将会是随即的。
wugaofeng555 2009-02-12
  • 打赏
  • 举报
回复
就跟你问 1+1 为什么等于2一样。
yndfcd 2009-02-12
  • 打赏
  • 举报
回复
如果不在初始化列表中初始化,那么他那此参数要从哪里来?

构造函数必须保证他返回之后,会产生一个完整的对象出来.
waizqfor 2009-02-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 haipeng31 的帖子:]
为什么data member of a class type that does not have a default constructor必须用constructor intializer?
[/Quote]
这就是语法规则 LZ仔细阅读教材
chenzhp 2009-02-12
  • 打赏
  • 举报
回复
有些语法就是这样定义的
szqh97 2009-02-12
  • 打赏
  • 举报
回复
楼主好好看看书吧
taodm 2009-02-12
  • 打赏
  • 举报
回复
规定,就是规定,不再需要理由。

65,211

社区成员

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

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