注册 登录
编程论坛 C++教室

构造函数和析构函数怎么用

guowei3758 发布于 2010-04-29 20:34, 1238 次点击
新手求助,构造函数和析构函数怎么用?不太清楚啊。。。。。。。都是做什么的??
9 回复
#2
2010-04-29 23:12
构造函数作用就是在对象被创建时利用特定的之构造对象,将对象初始化为一个特定的状态。简单的说构造函数就是初始化对象。
而析构函数与构造函数的作用恰好相反,它用来完成对象被删除前的一些清理工作。
#3
wow512010-04-29 23:27
构造函数可以认为是特殊的成员函数,不能为其指定返回值类型,可以利用它对数据成员进行初始化!这个析构函数一个类只能有一个析构函数,也必定有一个析构函数用来释放构造函数(使用完以后)所占用的内存空间。
#4
xueyuhanhai2010-04-30 18:30
楼主要认真的看书了,一本c++基础其实前半本是重复c语言的知识,真正的只有类和对象是重点。
1构造函数:a.他和你所定义的类的类名一样,没有函数的类型;
           b.他也是一个成员函数;
           c.他的参数可以有多个可,也可以没有。
作用:是在创建一个对象时系统会自动调用的;一般是两种情况:1.初始化一个对象,2.给一个对象赋植(此时创建的一个无名对象)。
2.析构函数:a.他和你所定义的类的类名一样,没有函数的类型;
            b.他也是一个成员函数;
            c.他没有参数;
            d.他的函数名前加上一个~;
作用:是对所创建的对象进行释放。
         
#5
BlueGuy2010-04-30 18:34
构造函数
就是c语言中的 经常看到的初始化函数,init();

只不过你在new 一个对象的时候 自动调用他, 省了那么一点点打字的力气
#6
guowei37582010-04-30 19:16
要初始化的是不是在类中定义的东西????比如:
在public中定义了两个成员函数void aa(int a,double b);void bb(int c,double d);
类名为asd
那么构造函数就应该是asd(int a,int c,double b,double d);
析构函数~asd();  括号中啥都不写,对吗?


[ 本帖最后由 guowei3758 于 2010-4-30 19:24 编辑 ]
#7
最近不在2010-04-30 23:12
在main中使用时
student obj; 这种通过不带参数的构造函数初始化(默认值)。
student obj1(10);这种通过带参数的构造函数初始化。
那么就需要在类型写上构造函数:
class Age:
{
    public:
            student();  //给m赋默认值
            student(int n);  //将对象所带参数n传递(赋值)给私有成员m,也就是初始化
            ~student();  //程序结束时,开始释放对象,一般是成员函数动态内存分配了,用析构函数进行扫尾工作,释放分配的东西,跟new,delete,很像,有创建就有释放。
    private:
            int m;
}
#8
南国利剑2010-05-01 08:38
构造函数和析构函数都是系统自动调用的。
构造函数是在定义类的对象的时候,对对象进行初始化工作的。
而析构函数是在程序运行结束之前,对对象进行消亡处理,释放内存空间。
#9
guowei37582010-05-01 18:32
就是说只要在main函数中出现asd dsa()
括号中有东西时就要用构造和析构???
如果括号中为空就不用写构造和析构???
#10
apull2010-05-01 19:34
回复 9楼 guowei3758
所有的对象都有构造函数和析构函数,如果你没有定义这些函数,那么编译器会自动添加的。
括号中不带参数的称为默认构造函数。
构造函数没有返回类型,函数名跟类名相同,可以没有或有数个参数。
构造函数的主要作用是初始化类的状态。

析构函数的作用是清理对象。
1