C++ 构造初始化构造函数中的参数

C++ 构造初始化构造函数中的参数,c++,C++,我有一个简单但可能愚蠢的问题。我被要求指出两种初始化方式之间的区别。我真的不能指出区别。你能帮我吗 A(int a); A(int a=3); 在第一种方法中,必须为构造函数提供int 安塔; 在第二种情况下,可以提供int,但如果不提供,a的默认值将是3 a=3; 假设A是类或结构,则: 安塔; 定义要求调用方在创建的对象实例时提供输入值的,例如: A a12345;//好啊 A;//错误 鉴于: a=3; 定义具有默认参数值的转换构造函数,允许调用方在需要时忽略传入值,例如: A a112

我有一个简单但可能愚蠢的问题。我被要求指出两种初始化方式之间的区别。我真的不能指出区别。你能帮我吗

A(int a);
A(int a=3);

在第一种方法中,必须为构造函数提供int

安塔; 在第二种情况下,可以提供int,但如果不提供,a的默认值将是3

a=3; 假设A是类或结构,则:

安塔; 定义要求调用方在创建的对象实例时提供输入值的,例如:

A a12345;//好啊 A;//错误 鉴于:

a=3; 定义具有默认参数值的转换构造函数,允许调用方在需要时忽略传入值,例如:

A a112345;//好的,将使用a=12345 A a2;//好的,将使用a=3 由于传入输入值在此构造函数中是可选的,因此它也可以用作A,除非还定义了一个,否则在没有提供输入值时,调用哪个构造函数就变得不明确,例如:

A. a=3; A;//错误、歧义 安塔; a=3

我们不能在类中同时声明上述构造函数声明

因为编译器会说函数已经定义

安塔;等于Aint a=3

例如,如果您有一个如下所示的构造函数


Aint value=3{a=value;cout具有默认值的值也算作默认构造函数。