C++构造器,析构器 什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:07:33
C++中构造器和析构器是什么意思?什么时候调用构造大,什么时候调用析构器?c++程序是怎么运行了,运行到什么跳到构造器,又运行到什么跳到析构器?求高手解答。

构造器,就是构造函数,是在创建一个对象的时候由系统自动调用的。
例如,int a;这个时候就调用int的构造函数,创建了一个int型的对象a.
再多说一个,int a=10;这个时候实际是做了两个操作,第一是调用构造函数创建a,然后调用int的=操作符,给a赋值。

int *p = new int();这个时候也会调用构造函数。

对于你自己写的类,如果你没有自己写构造函数,编译器会自动给你产生一个构造函数,让你调用。

析构器,也就是析构函数,当一个对象在消亡的时候,由编译器自动调用。对于系统自带的类型,例如int,char等,它的析构函数是由编译器提供的,对于你自己定义的类,它的析构函数是你自己写的。
对象在什么时候消亡呢?
对于普通的对象来说,就是在离开它的作用域的时候,比如你在一个函数里定义了一个对象,在跳出函数的时候,它就消亡了。

顺带说下new delete malloc free的区别,

int *p = new int();这个时候调用构造函数
delete p;这个时候调用析构函数

int *p = (int *)malloc(sizeof(int));这个时候不会调用构造函数
free(p);这个时候不会调用析构函数。

另外假如你定义一个类
class person{
public:
person();
persion(int age);
};

person myperson;这个时候会调用person();
person yourperson(10);这个时候会调用persion(int age);

关于构造器和析构器指的是c++中的构造函数和构析函数,他的主要用途就是在创建类的时候用到,构造函数和构析函数的定义有两种方法,一种就是什么也不做,使用默认的构造函数和构析函数,不过这种方法的局限性非常大,几乎没有什么用,第二种方法是自定义构造函数和构析函数,这种方法非常强大,能够充分的发挥构造函数和构析函数的强大功能,一