【C++】构造函数和析构函数
构造函数:当对象要被创建时被调用
析构函数:当对象要被销毁时被调用
构造函数
构造函数的名字和类的名字相同(大小写也一样)
class X {
int i;
public:
X();
};
构造函数是在对象被创建时自动调用,其无返回类型,但可有参数,如:
Tree t(12);
若构造函数没有参数,则称之为default constructor
注意这里的default constructor并非是编译器提供的,编译器提供的constructor称为auto default constructor
对象初始化时若未给参数,则编译器会去调用default constructor,若无default constructor,则会报错。
如声明对象数组时:
A y[2] = { A(1) };
这里编译器会默认第二个对象A是用default constructor来构造,若该对象无default constructor,则会报错。
析构函数
析构函数既无返回类型,也不能有参数,一般是用于返还对象生命期中申请的资源
class Y {
int i;
public:
~Y();
};
Java会清空声明对象的内存区域,而c++不要求,故绝大多数编译器都不会做这个事,只能让程序员通过析构函数来实现。
vs studio的debug编译c++代码时,编译器会将对象的内存区域中填充0xCD来表明未被初始化,而0xCDCD恰好在国标码里表示烫字