C++构造函数重载

程序例子如下:

#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、一个类可以有多个构造函数,但是在调用的时候,只会更具需要调用其中的一个构造函数。

猜你喜欢

转载自blog.csdn.net/haoaoweitt/article/details/81197624