C++中的析构函数和构造函数

原创 2013年12月02日 15:34:08
析构函数(destructor)是一个特殊的成员函数。
析构函数的定义:
~类名(){}
执行时期:当对象的生命周期结束时就会自动执行析构函数。具体情况如下:
1、如果在一个函数中定义了一个对象(局部对象),当这个函数被调用,且执行结束时,对象应该释放,也就是在释放对象前调用析构函数。
2、static局部对象在函数调用结束时并不释放对象,因此这是并不执行析构函数,在main函数执行结束或调用exit()函数结束程序时,这时调用局部对象的析构函数。
3、如果定义了一个全局对象,在程序执行结束或调用exit结束程序,则会调用析构函数。
4、使用new运算符动态创建对象,在使用delete释放对象时,调用期析构函数。
对析构函数的理解:析构函数的作用不是删除对象,是在对象的声明周期结束时释放该对象所占用的资源。他还可以用于完成程序员想要在该对象生命结束时完成任何程序员想要完成的动作。

析构函数和构造函数的比较:
1、调用的时间:(一般情况下)构造函数随着类的实例化,而被执行;但是析构函数在一个实例化的对象生命周期结束时被调用。
有一句话可以概括:”先构造的后析构,后构造的先析构“。
2、在一个程序中,构造函数可以有多个,但是析构函数只能有一个。


通过实例更好的理解:
#include
#include
using namespace std;
class Person
{
private:
string name;
public:
Person(string n)
{
name = n;
cout<<"Constructor called!"<<endl;
}
~Person()
{
cout<<"Destructor called!"<<endl;
}
void show()
{
cout<<"name"<<name<<endl;
}

};
class Student
{
private:
string name;
public:
Student(string n);
~Person()
{
cout<<"Destructor called!"<<endl;
}

void show()
{
cout<<"name"<<name<<endl;
}

};

Student::Stuednt(string n)
{
name = n;
cout<<"Constructor called!"<<endl;
}


int main()
{
Person p("zhangsan");
p.show();
Student s("lisi");
s.show();
return 0;
}
运行结果:
Constructor called! 
name:zhangsan 
Constructor called! 
name:lisi 
Destructor called! 
Destructor called!
 



版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

C++ 构造函数和析构函数

1.C++规定,每个类必须有默认的构造函数,没有构造函数就不能创建对象。    2.若没有提供任何构造函数,那么c++提供自动提供一个默认的构造函数,该默认构造函数是一个没有参数的构造函数,它仅...

C++_构造函数和析构函数

构造函数: 作用:    1)分配空间:分配非静态数据成员的存储空间    2)初始化成员:初始化非静态数据成员 分配空间:    1)含有指针变量,需要程序员显式申请空间(使用new申请)...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

C++构造函数和析构函数

类是一种用户自定义的类型,声明一个类对象时,编译程序要为对象分配存储空间,进行必要的初始化。在C++中,由构造函数来完成。与构造函数对应的是析构函数,当撤销类对象时,析构函数回收存储空间,并做一些善后...

[c++]构造函数和析构函数

构造函数: 1 函数名=类名 2 无返回值 3 当用类声明对象时,系统自动调用 4 如果没有构造函数,系统会自动给一个默认的

C++_构造函数和析构函数

//***** 构造函数 ***** class rectangel { public: rectangel () // 默认的构造函数,如果没有自定义默认构造函数,系统就会自动生成,如果自...

C++_构造函数和析构函数

构造函数和析构函数

【C#】构造函数和析构函数

一、构造函数 是类的一种特殊的方法,每次创建类的实例都会调用它,构造函数的定义类似于一个方法的定义,但区别是通常不显示的调用构造函数,在创建一个实例的时候,构造函数就像一个方法一样被调用。另外,没有...

【C++】构造函数和析构函数

一、构造函数的介绍     1. 构造函数的作用         构造函数主要用来在创建对象时完成对对象属性的一些初始化等操作, 当创建对象时, 对象会自动调用它的构造函数。一般来说, 构造函数有...

C#构造函数和析构函数

构造函数和析构函数  转载http://www.cnblogs.com/philzhou/archive/2010/08/10/CSharp_Constructor.html 本节说明对象的创建、初...

C++ 构造函数和析构函数

构造函数: 作用:    1)分配空间:分配非静态数据成员的存储空间    2)初始化成员:初始化非静态数据成员 分配空间:    1)含有指针变量,需要程序员显式申请空间(使用new申请)...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)