析构函数 析构函数与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~SetXY( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。
/* setxy.h */
#ifndef SETXY_H
#define SETXY_H
#include <qpushbutton.h>
class SetXY: public QWidget
{
public:
SetXY(QWidget *parent=0,const char *name=0);
~SetXY();
private:
QPushButton *button1;
QPushButton *button2;
QPushButton *button3;
};
#endif
/* setxy.cpp */
#include "setxy.h"
SetXY::SetXY(QWidget *parent,const char *name)
: QWidget(parent,name)
{
setMinimumSize(90,40);
setMaximumSize(190,220);
resize(190,220);
button1 = new QPushButton("Upper Left",this);
button1->setGeometry(0,0,90,40);
button2 = new QPushButton("Middle Right",this);
button2->setGeometry(90,70,100,50);
button3 = new QPushButton("Bottom",this);
button3->setGeometry(45,140,50,80);
}
SetXY::~SetXY() { }