构造函数是一个特殊的成员函数,名字和类名相同,创建类类型对象时由编译器自动调用,虽然构造函数名称叫做构造,但是它的主要任务是初始化对象,而不是开空间创建对象,在对象的生命周期内只调用一次。如果用户没有编写构造函数,则编译器和自动提供一个无参数的构造函数,这个函数就叫默认构造函数。
构造函数其特征如下:
1 函数名与类型名相同。
2 无返回值。
3 对象实例化时编译器自动调用对应的构造函数。
4构造函数可以重载。
下面是一个构造函数的例子:
#include<iostream>
using namespace std;
class CLOCK {
public :
CLOCK(int newhour, int newminute, int newsecond);
CLOCK();
void showtime();
private:
int hour,minute,second;
};
CLOCK::CLOCK(int newhour, int newminute, int newsecond):hour(newhour),minute(newminute),second(newsecond){}
CLOCK::CLOCK() : hour(0), minute(0), second(0) {}
int main()
{
CLOCK a();//a不是CLOCK类的实例化,a()是一个普通的无参的函数
CLOCK b(20, 5, 2);
CLOCK c;
b.showtime();
c.showtime();
return 0;
}
void CLOCK::showtime()
{
cout << hour << ":" << minute << ":" << second << endl;
}
默认构造函数全缺省和无参之能出现一个,所以以下写法是错的:
CLOCK(int newhour=10, int newminute=10, int newsecond=10);
CLOCK();