#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)一个类只能由一个默认构造函数。
有参构造函数和无参构造函数可以出现在一个类中,但是一个函数中不能出现多个默认构造函数。无参的构造函数可以和有参的构造函数在一个类中,但是无参函数不能和默认有参函数在一个类中。