构造与析构
构造函数是一种特殊的类成员函数,在创建类对象时被调用,构造函数的名称和类名相同,但通过函数重载,可以创建多个同名的构造函数,条件是每个函数的特征标(参数列表)不同。另外构造函数没有声明类型。通常,构造函数用于初始化类对象的成员,初始化应与构造函数的参数列表匹配。
构造与析构的行为(调用顺序)
#include <iostream>
using namespace std;
class Test
{
public:
Test(int number);
~Test();
private:
int number_;
};
Test::Test(int number)
{
number_ = number;
cout << number << " construct, run" << endl;
}
Test::~Test()
{
cout << number_ << " deconstruct, run" << endl;
}
int main()
{
/* 无法使用对象来调用构造函数,因为在构造函数构造出对象之前,对象是不存在的,
构造函数被用来创建对象,而不能通过对象来调用 */
Test t1(1);
Test t2(2);
std::cout << "Hello world" << std::endl;
return 0;
}
当定义类时自动执行构造函数,当对象的声明周期结束时调用析构函数。构造与析构的执行顺序相反,调用t2系统函数,再调用t1析构函数,先创建的对象后释放。