c++构造函数 问题

#include<iostream>
using namespace std;
class abc
{
public:
	abc(int a, int b, int c)
	{
		cout << "lljf"<<endl;
	}
	
	int ab(int a=10)
	{
		cout << "hahahahah"<<endl;
		return 0;
	}
	int x;
	int y;
	int z;
	short ch;
};
int main()
{
	abc f1 = {10,11,12};
	cout << f1.x << endl;
	cout << f1.y << endl;
	cout << f1.z << endl;
	f1.ab();
}
//加上构造函数后 f1对象初始化只能给 构造函数参数赋值 不加可以给构造函数可一个x y z参数赋值什么原因?

 

如果用户没定义构造函数,编译器默认生成一个无参数无函数体的构造函数,一旦用户自定义了一个以上的构造函数,编译器不会再继续创建默认构造函数,也就是说创建对象时必须调用自定义的构造函数。