关于构造函数与析构函数的作用?

mycsxy 2007-11-26 10:34:47
关于构造函数与析构函数的作用?
构造函数最主要作用就是生成对象和初始化对象。还有没有其他作用?
析构函数的作用与构造函数作用相反,但最主要作用是在对象要完成生命周期时完成清理性工作,还有没有其他作用?
构造函数与析构函数都没有返回值类型,系统自动调用。
普通变量在初始化之前内存的状态是什么?当然会说是随机值。 (vc编译系统并不是随机的
我上机的经验看到 int 类型的变量是 -858993460;
float 类型的变量是-1.07374e+008,double 类型的变量是-9.2559631349317831e+061,char 类型的变量是-52 ’?)
然而具体的一个对象在初始化之前内存的状态是什么?当然也会说是随机值。构造函数最主要作用就是生成对象和初始化对象。
如果我们没有写构造函数,那么系统会自动调用默认的构造函数,默认的构造函数对对象数据成员没有起初始化作用,没有修改数据成员的值,当然会有这样的问题:生成对象的那段内存又处于随机值?
构造函数最主要作用就是生成对象,如果没有构造函数连默认的构造函数都没有,又能不能生成对象?
构造函数生成对象和初始化对象,那就相当于申请一段内存区域并在区域用新值来覆盖旧值。既然那样,何必又用析构函数呢,那么自然会想到析构函数调用完成后那段内存又处于什么状态,我想不时随机的。那又是什么呢?
请各位大哥指点指点!!
...全文
731 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxjddd 2007-11-27
  • 打赏
  • 举报
回复
构造函数的作用……貌似只是初始化对象,还没有到达生成对象的境地。

随机值……其实不好这么说,反正一个东西在初始化之前,你把它当成不可估摸的值就好了,不要假定它有任何规律,包括“随机”这样的规律。
ckt 2007-11-27
  • 打赏
  • 举报
回复
也不能说是构造函数生成对象
是当你调用一个构造函数定义对象时,
编译器的处理是,生成一个对象,然后把对象指针this传递给构造函数以对该对象进行初始化

析构呢,在对象生命周期结束时,被调用,进行清理工作。

如果是编译器为你产生的默认构造函数,并不会初始化你的数据成员,
所以这些数据成员的值是上次内存使用后遗留下来的值

jixingzhong 2007-11-27
  • 打赏
  • 举报
回复
如果只是简单的 int 成员,构造/析构自然可以不必定义,使用默认也是可以的。
但是如果成员有指针呢?分配内存就是构造的任务,释放就是析构的任务了。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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