感觉构造函数像定义的初始化,构造函数是每个函数都有的,如果自己没有去定义的话,系统会给你一个构造函数,析构函数也是这样的,但是他不会给你初始化的值的
一 : 构造函数有这几个特点:
1. 函数名字和类名相同
2.没有返回值
3.要在public权限下
4.自动调用---(在定义变量的时)
5.不能被继承
6.可以重载
7.默认构造函数只有一个
二: 构造函数的几种不同的赋值方式
1.直接在函数里面附初值
#include <iostream>
using namespace std;
class Time
{
public :
Time()///构造函数--初始化的过程
{
hour = 0;
minute = 0;
sec = 0;
}
void set_time();
void show_time();
private:
int hour;
int minute;
int sec;
};
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.show_time();
return 0;
}
2.带参数的构造函数
#include <iostream>
using namespace std;
class Time
{
public :
Time(int h, int m, int s)///构造函数--初始化的过程
{
hour = h;
minute = m;
sec = s;
}
void show_time();
private:
int hour;
int minute;
int sec;
};
void Time::show_time()
{
cout<<hour<<":"<< minute<<":"<<sec<<endl;
}
int main()
{
Time t1(1,2,3);
t1.show_time();
Time t2(2,3,4);
t2.show_time();
return 0;
}
3.用参数初始化表重载
#include <iostream>
using namespace std;
class Time
{
public :
Time(int h, int m, int s): hour(h),minute(m),sec(s)
{
}
void show_time();
private:
int hour;
int minute;
int sec;
};
void Time::show_time()
{
cout<<hour<<":"<< minute<<":"<<sec<<endl;
}
int main()
{
Time t1(1,2,3);
t1.show_time();
Time t2(2,3,4);
t2.show_time();
return 0;
}
4.默认参数的构造函数
#include <iostream>
using namespace std;
class Time
{
public :
Time(int h = 1, int m = 1, int s = 1): hour(h),minute(m),sec(s)
{
}
void show_time();
private:
int hour;
int minute;
int sec;
};
void Time::show_time()
{
cout<<hour<<":"<< minute<<":"<<sec<<endl;
}
int main()
{
Time t1(5);
t1.show_time();
Time t2(2,3,4);
t2.show_time();
return 0;
}
5. 构造函数的重载
#include <iostream>
using namespace std;
class Time
{
public :
Time()
{
hour = 1;
minute = 2;
sec = 3;
}
Time(int h , int m , int s): hour(h),minute(m),sec(s)
{
}
void show_time();
private:
int hour;
int minute;
int sec;
};
void Time::show_time()
{
cout<<hour<<":"<< minute<<":"<<sec<<endl;
}
int main()
{
Time t1;
t1.show_time();
Time t2(2,3,4);
t2.show_time();
return 0;
}
6.默认构造函数只能有一个
#include <iostream>
using namespace std;///默认构造函数只能拥有一个
class Time/// 在建立对象时不必给出实参的构造函数为默认构造函数
{
public :
Time()
{
hour = 1;
minute = 2;
sec = 3;
}
Time(int h = 1, int m = 1, int s = 1): hour(h),minute(m),sec(s)
{
}
void show_time();
private:
int hour;
int minute;
int sec;
};
void Time::show_time()
{
cout<<hour<<":"<< minute<<":"<<sec<<endl;
}
int main()
{
Time t1;
t1.show_time();
Time t2(2,3,4);
t2.show_time();
return 0;
}