Jad*_*Jad 1 c++ constructor class default-arguments
我正在编写此类构造函数:
element(int f=0, int a)
{
first = f;
inc = a;
current = first - inc;
}
Run Code Online (Sandbox Code Playgroud)
参数被分配给构造函数体中的成员变量。我被要求接听以下电话main()才能工作:
prog = new element(3,5);
prog = new element(5);
Run Code Online (Sandbox Code Playgroud)
我无法更改(3,5). 就像在构造函数中一样,f需要先传递,然后再传递a。但是,f如果没有传入值,则需要初始化为 0,这样第二次调用就保持f为 0,而只初始化a为 5。
这样做的问题是,如果我在构造函数签名中按此顺序放置参数,则会出现错误。
我该如何解决这个问题?
构造函数的这个声明是无效的:
element(int f=0, int a)
{
first = f;
inc = a;
current = first - inc;
}
Run Code Online (Sandbox Code Playgroud)
如果参数具有默认参数,则所有后续参数也必须具有默认参数。
您需要的是声明两个构造函数,例如:
element(int f, int a) : first( f ), inc( a )
{
current = first - inc;
}
element(int a) : element( 0, a )
{
}
Run Code Online (Sandbox Code Playgroud)
最好声明第二个构造函数explicit以防止从单个整数到element类型的隐式转换:
explicit element(int a) : element( 0, a )
{
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |