1、什么是构造函数和析构函数
类的构造函数是一种特殊的成员函数,它会在每次创建类的新对象时执行。
类的析构函数也是一种特殊的成员函数,它会在每次创建类的新对象时执行。
2、构造函数和析构函数的声明
构造函数的声明方式是在类内添加一个名字与类名相同的函数。
析构函数则是在名字前添加一个"~"号。
/*Box基类*/
class Box
{
protected:
int width;
int length;
public:
void setWidth(int widthIn);
void setLength(int lengthIn);
int getWidth();
int getLength();
// 声明构造函数
Box(int widthIn,int lengthIn);
// 声明析构函数
~Box();
};
3、应用实例
接下来的例子将会建立Box类,在最后会释放Box类。
#include <iostream>
#include <cstring>
using namespace std;
/*Box基类*/
class Box
{
protected:
int width;
int length;
public:
void setWidth(int widthIn);
void setLength(int lengthIn);
int getWidth();
int getLength();
// 声明构造函数
Box(int widthIn,int lengthIn);
// 声明析构函数
~Box();
};
void Box::setWidth(int widthIn) {
width = widthIn;
}
void Box::setLength(int lengthIn) {
length = lengthIn;
}
int Box::getWidth() {
return width;
}
int Box::getLength() {
return length;
}
Box::Box(int widthIn, int lengthIn)
{
width = widthIn;
length = lengthIn;
}
Box::~Box()
{
cout << "The class is end" << endl;
}
int main()
{
// 利用new动态建立类
Box *box;
box = new Box(10, 10);
cout << "The length of the box is " << box->getLength() << endl;
cout << "The width of the box is " << box->getWidth() << endl;
box->setLength(5);
box->setWidth(5);
cout << "The length of the box is " << box->getLength() << endl;
cout << "The width of the box is " << box->getWidth() << endl;
// 利用delete动态释放类
delete box;
system("pause");
return 1;
}
应用结果为:
The length of the box is 10
The width of the box is 10
The length of the box is 5
The width of the box is 5
The class is end