程序例子如下:
#include "iostream"
using namespace std;
//构造函数的重载,析构函数不可以重载
class Box
{
public:
Box();//无参的构造函数
Box(int length,int width,int height);//有参数的构造函数
~Box(); //调用析构函数
int volume(); //成员函数器求体积
private:
int length;
int width;
int height;
};
Box::Box()
{
length = 10;
width =10;
height =10;
cout << "无参的构造函数被调用:Box()"<<endl;
}
Box::Box(int length,int width,int height):length(length),width(width),height(height) //有参数的构造函数,通过初始化列表赋值
{ cout << "含参的构造函数被调用:Box(int length,int width,int height)"<<endl; }
Box::~Box() //调用析构函数
{
cout << "析构函数被调用:~Box()"<<endl;
}
int Box::volume()//成员函数器求体积
{
return (height*width*length);
}
int main()
{
Box box1;
cout <<"The volume of box1 is :" << box1.volume()<<endl;
Box box2(15,12,13);
cout <<"The volume of box2 is :" << box2.volume()<<endl;
return 0;
}
运行结果如下:
对于构造函数的使用:
1、在类进入作用域的时候调用构造函数;
2、构造函数没有返回值,因此也不需要在定义构造函数时候声明类型,这是和一般函数的重要区别;
3、构造函数不需要用户调用,也不需要用户调用;
4、函数的函数体不仅可对数据成员赋值,而且可以在构造包含其他语句,但是为了保证程序的清晰,一般不这样做;
5、如果用户没有定义构造函数,系统会默认的生成一个缺省的构造函数,该函数体是空的,没有参数,也不进行初始化操作;
6、调用构造函数时不必给出实参的构造函数,称为默认构造函数(default constructor)。显然,无参的构造函数属于默认构造函数。一个函数智能有一个默认的构造函数
7、一个类可以有多个构造函数,但是在调用的时候,只会更具需要调用其中的一个构造函数。