黑马程序员技术交流社区

标题: 析构函数和构造函数的区别? [打印本页]

作者: lijun6459991    时间: 2011-12-15 21:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: 张旭    时间: 2011-12-15 21:56
析构函数与构造函数相反     构造函数  主要用来在创建对象时初始化对象 即为对象成员变量赋初始值     析构函数往往用来做清理善后的工作(如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放
作者: 黑马——兰雷明    时间: 2011-12-16 00:58
构造函数:
它的作用是在建立一个对象时,作某些初始化的工作(例如对数据赋予初值)   如果一个都没有,编译器将为该类产生一个默认的构造函数。
析构函数:
当一个类的对象离开作用域时,析构函数将被调用(系统自动调用)。析构函数的名字和类名一样,不过要在前面加上 ~          对一个类来说,只能允许一个析构函数,析构函数不能有参数,并且也没有返回值。析构函数的作用是完成一个清理工作,如释放从堆中分配的内存。
一个类中可以有多个构造函数,但析构函数只能有一个。对象被析构的顺序,与其建立时的顺序相反,即后构造的对象先析构。
作者: 刘波    时间: 2011-12-19 15:49
构造函数:
什么是构造函数?
通俗的讲,在类中,函数名和类名相同的函数称为构造函数。它的作用是在建立一个对象时,作某些初始化的工作(例如对数据赋予初值)。C#允许同名函数,也就允许在一个类中有多个构造函数。如果一个都没有,编译器将为该类产生一个默认的构造函数。
构造函数
惟一的语法限制是它不能指定返回类型,甚至void 也不行。
不带参数的构造函数:一般形式为 类名 对象名(){函数体}
带参数的构造函数:不带参数的构造函数,只能以固定不变的值初始化对象。带参数构造函数的初始化要灵活的多,通过传递给构造函数的参数,可以赋予对象不同的初始值。一般形式为:构造函数名(形参表);
创建对象使用时:类名 对象名(实参表);
构造函数参数的初始值:构造函数的参数可以有缺省值。当定义对象时,如果不给出参数,就自动把相应的缺省参数值赋给对象。一般形式为:
构造函数名(参数=缺省值,参数=缺省值,……);

析构函数:
当一个类的对象离开作用域时,析构函数将被调用(系统自动调用)。析构函数的名字和类名一样,不过要在前面加上 ~ 。对一个类来说,只能允许一个析构函数,析构函数不能有参数,并且也没有返回值。析构函数的作用是完成一个清理工作,如释放从堆中分配的内存。
一个类中可以有多个构造函数,但析构函数只能有一个。对象被析构的顺序,与其建立时的顺序相反,即后构造的对象先析构。
作者: 黄山    时间: 2011-12-26 13:03
构造函数和析构函数是两个相反的过程 构造函数用来初始化对象 比如 T t=new T() ,T()就是一个构造函数 构造函数是必须有的,不写的话系统会默认给一个,一旦自己写了构造函数 那系统默认的便没有了 构造函数可以有多个 析构函数是用来删除创建的对象的 由于c#有垃圾回收机制 所以析构函数可以不写 和C++比起来 系统自动回收的话 安全了但是效率也低了
作者: 王兴    时间: 2011-12-31 19:50
构造函数是用来初始化对象,对对象的一些字段赋值,如new一个对象,则会首先调用相应类的构造函数。
析构函数是用来释放对象所占用资源的函数。当对象的生命周期结束后,会自动调用析构函数




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2