C++类的构造函数和析构函数
一、构造函数
构造函数在类的对象被创建时,自己调用,不可以显式调用。通常用构造函数来做一些初始化的工作。
构造函数又分为两类:
1. 无参数的构造函数
2. 带参数的构造函数
无参数的构造函数的实例:
#include <iostream>
using namespace std;
class Line
{
public:
void setL(int l);
int getL();
Line();
private:
int length;
};
Line::Line(void)
{
cout << "创建了一个对象\n" << endl;
}
void Line::setL(int l)
{
length = l;
}
int Line::getL()
{
return length;
}
int main()
{
Line line;
line.setL(10);
printf("The line's length is:%d",line.getL());
return 0;
}
其运行结果为:
创建了一个对象
The line's length is:10
不带参数的构造函数相对来说还是比较简单的。下面来看一下带有参数的构造函数:
#include <iostream>
using namespace std;
class Line
{
public:
void setL(int l);
int getL();
Line(int l);
private:
int length;
};
Line::Line(int l)
{
length = l;
cout << "创建了一个对象,并赋初值\n" << endl;
}
void Line::setL(int l)
{
length = l;
}
int Line::getL()
{
return length;
}
int main()
{
Line line(3);
printf("The line's length is:%d\n",line.getL());
line.setL(10);
printf("The line's length is:%d",line.getL());
return 0;
}
运行结果如下:
创建了一个对象,并赋初值
The line's length is:3
The line's length is:10
同时也可用初始化列表的形式来初始化字段,只需要更改Line::Line(int l)这个函数的样子即可:
Line::Line(int l):length(l)
{
cout << "创建了一个对象,并赋初值\n" << endl;
}
二、析构函数
析构函数用于对象被销毁时,释放内存空间,处理缓存垃圾等。同时析构函数与构造函数同样,不可以被显式调用。
#include <iostream>
using namespace std;
class Line
{
public:
void setL(int l);
int getL();
Line(int l);
~Line(void);
private:
int length;
};
Line::Line(int l):length(l)
{
cout << "创建了一个对象,并赋初值\n" << endl;
}
Line::~Line(void)
{
cout << "对象已经被销毁\n" << endl;
}
void Line::setL(int l)
{
length = l;
}
int Line::getL()
{
return length;
}
int main()
{
Line line(3);
printf("The line's length is:%d\n",line.getL());
line.setL(10);
printf("The line's length is:%d\n",line.getL());
return 0;
}
运行的结果为:
创建了一个对象,并赋初值
The line's length is:3
The line's length is:10
对象已经被销毁