编译器不会主动生成构造函数,只有定于的时候才会生成。
构造函数与类名相同,可以有参数,不能有返回类型。
没有定义构造函数时,编译器会自动生成构造函数。
当类实例化出对象时
构造函数的作用为初始化对象,所以对象生成时就会调用构造函数。
class Test_a
{
public:
Test_a();
};
Test_a::Test_a()
{
cout << "构造函数";
}
int main()
{
Test_a cl_1;//会自动执行构造函数
}
构造函数和其他函数一样都可以进行重载。
class Test_a
{
public:
Test_a();
Test_a(int i);
};
Test_a::Test_a()
{
cout << "构造函数";
}
Test_a::Test_a(int i)
{
cout << "重载构造函数" << i;
}
int main()
{
Test_a cl_1(1);//会按照参数的传入状态执行构造函数
Test_a *cl_2=new Test_a(1);//使用类指针时同样会执行构造函数。
}
构造函数在对象数组中的使用
class Test_a
{
public:
Test_a();
Test_a(int i,int j);
};
Test_a::Test_a()
{
cout << "构造函数";
}
Test_a::Test_a(int i,int j=10)
{
cout << "重载构造函数" << i<<j;
}
int main()
{
Test_a a[3]={Test_a(),Test_a(2,5),Test_a(3)};//使用类指针时同样会执行构造函数。
Test_a *b[3] = { new Test_a,new Test_a(1),new Test_a(2) };//效果与上相同
}