C++学习笔记(构造函数)

构造函数:

如果一个数据成员未被赋值,则其值不可预知。在系统为之分配内存时,保留了存储单元的原状,就成为了这些数据成员的初始值。

注:类的数据成员是不能在声明类时初始化的。

构造函数是一种特殊的成员函数,与其他函数不同,不需要用户调用,而是在建立对象时自动执行。

构造函数与类名相同。

不具有任何类型,不返回任何值。

构造函数的功能由用户定义,用户根据初始化要求设计函数体和函数参数。

两种方法定义构造方法:

在类中声明且定义:

class Time{
public:
	Time(){
		hour=0;
		minute=0;
		sec=0;
	}//声明构造函数
	void set_time();
	void show_time();
private:
	int hour;
	int minute;
	int sec;
};

在类中声明但在类外定义:

class Time{
public:
	Time();//声明构造函数
	void set_time();
	void show_time();
private:
	int hour;
	int minute;
	int sec;
};
Time::Time(){
hour=0;
minute=0;
sec=0;
}

说明:

(1)在类对象进入其作用域时调用构造函数。

(2)构造函数无返回值,所以不需要在定义时声明类型。

(3)不需用户调用,也不能被用户调用。

(4)在构造函数体内不仅可以对数据成员赋初值,还可以包含其他语句,但是不提倡加入除了初始化之外的语句。以保持程序清晰。

(5)若用户未自定义构造函数,则C++会自动生成一个构造函数,只是该函数体为空,也无参数,不执行初始化操作。

用参数初始化表对数据成员初始化:

该方法不在函数体内对数据成员初始化,而是在函数首部实现。

例:

Box::Box(int h,int w,int len):height(h),width(w),length(len){}
构造函数的重载

#include<iostream>
using namespace std;
class Box{
public:Box();//声明无参的构造函数
	   Box(int h,int w,int len):height(h),width(w),length(len){}//声明有参的构造函数,并初始化
	   int volume();
private:
	int height;
	int width;
	int length;
};
Box::Box(){//定义无参的构造函数
height=10;
width=10;
length=10;
}
int Box::volume(){
return (height*width*length);
}
int main(){
Box box1;//建立无实参对象
cout<<"The volume of the box1 is"<<box1.volume()<<endl;
Box box2(15,20,25);
cout<<"The volume of the box2 is"<<box2.volume()<<endl;

}

注:一个类只能有一个默认构造函数。尽管一个类中可以包含多个构造函数,但是建立对象时只执行其中一个构造函数,并非执行每个构造函数。

#include<iostream>
using namespace std;
class Box{
public:
	   Box(int h=10,int w=20,int len=30);//声明无参的构造函数指定默认参数
	   int volume();
private:
	int height;
	int width;
	int length;
};
Box::Box(int h,int w,int len){//定义无参的构造函数时可以不指定默认参数
	height=h;
	width=w;
	length=len;
}
int Box::volume(){
return (height*width*length);
}
int main(){
Box box1;
cout<<"The volume of the box1 is"<<box1.volume()<<endl;
Box box2(15,20,25);
cout<<"The volume of the box2 is"<<box2.volume()<<endl;
Box box3(35);
cout<<"The volume of the box3 is"<<box3.volume()<<endl;
Box box4(40,50);
cout<<"The volume of the box4 is"<<box4.volume()<<endl;

}

在构造函数中使用默认参数是方便而有效的,它提供了建立对象时的多种选择,它的作用相当于好几个重载的构造函数,它的好处是:即使在调用构造函数时没有提供实参值,不仅不会出错,而且还确保按照默认的参数值对对象进行初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值