c++之构造函数

#include<iostream>
using namespace std;
class Time
{
public:
	void set_time();
	void show_time();
	Time();
private:
	int sec;
	int minute;
	int hour;
};
Time::Time()
{
	hour=0;
	minute=0;
	sec=0;
}
void Time::set_time()
{
	cin>>hour;
	cin>>minute;
	cin>>sec;
}
void Time::show_time()
{
	cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
int main()
{
	Time t1;
	t1.set_time();
	t1.show_time();
	Time t2;
	t2.set_time();
	t2.show_time();
	return 0;
}

构造函数:
用来初始对象,与其他函数不同,他不需要用户来调用他,而是在建立对象时自动执行。函数名字必须与类的名字相同。
1)在建立类对象的时候会自动调用构造函数。
2)构造函数没有返回值、没有类型。
3)构造函数不需要用户调用、也不能被用户调用
4)在构造函数中不仅可以对数据进行行赋值同样也可以有别的语句,比如:cout<<。
5)如果用户没用定于构造函数,c++会自动生成一个构造函数。
带参数的构造函数:

#include<iostream>
using namespace std;
class Box
{
public:
	int volumn();
	Box(int,int,int);  //定义带参数的构造函数
private:
	int high;
	int width;
	int length;
};
int Box::volumn()
{
	return (high*length*width);
}
Box::Box(int h,int w,int l)  //设置参数
{
	high=h;
	width=w;
	length=l;
}
int main()
{
	Box  v1(20,60,50);
	Box  v2(30,50,60);
	cout<<"体积为:"<<v1.volumn()<<endl;
	cout<<"体积为:"<<v2.volumn()<<endl;
	return 0;
}

定义构造函数也可以用一下的方式:

Box::Box(int h,int l,int w):high(h),width(w),length(l){}

构造函数的重载:
在一个类中可以定义多个构造函数,这些构造函数的名字一样,但是他们的参数个数或者参数类型不相同。
比如:

Box();声明一个无参的构造函数,无参构造函数属于默认构造函数,默认构造函数只能有一个。
Box(int l,int h,int w):width(w),length(l),high(h){}; 定义一个有参数的构造函数。

1)如果在建立对象的时候选用的是无参函数,应注意书写方式:
Box box;
而不是Box box();
使用默认参数的构造函数

Box(int h=10,int l=10,int w=10);//声明默认参数的构造函数。
Box::Box(int h,int l,int w)
{                                         //定义默认参数的构造函数。
	high=h;
	width=h;
	length=h;
}

1)应在声明默认参数的时候的时候指明默认值,而不能在定义默认函数的时候指明默认值。
2)一个类只能由一个默认构造函数。
有参构造函数和无参构造函数可以出现在一个类中,但是一个函数中不能出现多个默认构造函数。无参的构造函数可以和有参的构造函数在一个类中,但是无参函数不能和默认有参函数在一个类中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值