构造函数和析构函数

2016年04月16日

1、构造函数(constructor)

  • 作用:对对象进行初始化
  • 形式:名字类名相同,可以有参数,但无返回值
  • 对象生成时自动调用,一个类可以有多个构造函数

2、复制构造函数(copy constructor)

  • 形式:只有一个参数,即对象的引用,形如:x::x(&x)或x::x(const&x)
  • 调用:在三种情况下被调用:

1、用一个对象去初始化另一个对象

2、函数有一个 参数是类A的对象,则该函数被调用时,类A的复制构造函数被调用

3、函数的返回值是类A的对象,则函数返回时,类A的复制构造函数被调用

3、类型转换构造函数

  • 目的:实现类型的自动转换
  • 运行时自动调用,建立一个临时变量/对象

4、析构函数(Destructor)

  • 形式:名字和类名相同,在类名前加~
  • 一个类最多只有一个析构函数,在对象消亡时自动调用
  • 作用:在对象消亡前做善后工作,释放分配空间等。若使用编译器自动生成的缺省析构函数,不涉及用户申请的内存释放等工作
  • delete运算符导致析构函数调用

下面以一个简单的例子说明下四个函数的调用过程:

cgi_principle cgi_principle cgi_principle