我当时正在研究超载问题,我完全被促销搞糊涂了。我看了SO(函数重载中的隐式转换序列)中的几篇文章,我确信还有一些文章可用,但找不到合适的文章。我也指的是http://www.dcs.bbk.ac.uk/~roger/cpp/week20。htm。我在看Stroustrup的C编程特别版时,看到了下面的解释。
通过在参数表达式的类型和函数的参数(形式参数)之间寻找最佳匹配,可以从一组重载函数中找到要调用的正确版本。为了近似我们关于什么是合理的概念,我们尝试了一系列标准:1精确匹配[2]使用促销匹配;[3] 使用标准转换进行匹配[4]使用用户定义的转换进行匹配[5]使用省略号进行匹配。。。。。。
void print(int);
void print(double);
void print(long);
void print(char);
void h(char c, int i, short s, float f)
{
print(s); // integral promotion: invoke print(int)
print(f); // float to double promotion: print(double)
}
我写了下面的代码。我在想,如果我调用值为1的函数,将调用func1(long),因为会发生提升。但我得到了错误消息“error:重载'func1(int)'的调用不明确”。它甚至不使用无符号字符类型的html" target="_blank">变量调用函数。
此外,如果我通过call Func1(3.4f),则调用Func1(双精度)并按照我的期望进行提升。为什么1没有提升为long int,但为什么浮动提升为双精度?发生什么整数提升?
void func1(unsigned char speed)
{
cout<<"Func1 with unsigned char: speed =" << speed <<" RPM\n";
}
void func1(long speed)
{
cout<<"Func1 with long Int: speed =" << speed <<" RPM\n";
}
void func1(double speed)
{
cout<<"Func1 with double: speed =" << speed <<" RPM\n";
}
int main(void)
{
func1(1);
func1(3.4f);
return(0);
}
本标准规定:
[C 11:4.13/1]:
(“整数转换秩”)
每个整数类型都有一个整数转换秩,定义如下:
这需要您的示例中的歧义。
对于func1(3.4f)
,这只是从浮点到双精度的提升,这是最佳匹配,因为其他两个重载方法具有长字符和无符号字符。
还要检查此表:
其中子句规定:
[conv.fpprom]:
(7.7浮点升级)
类型浮动
的prvalue可以转换为类型双
的prvalue。值不变。
- 这种转换称为浮点提升。
问题内容: 我已经转换一个到一个通过使用。然后,我尝试将其乘以0.01,但是出现一个错误,提示这是我的代码: 通过阅读其他文章,似乎答案与类型有关。例如,如果将类型设置为Integer,则它将收到类似的错误。我尝试将类型更改为Int,但这似乎无法解决问题。 我也曾尝试设置“海峡”和“pennyCount”作为类型和和的所有组合,和。我的猜测是问题与函数将a转换为an有关。 有人可以帮忙弄清楚问题可
问题内容: 我得到错误: 我也尝试过 和 但 工作良好。正确的语法是什么? 问题答案: 有一个功能:
问题内容: 我收到一个错误 找不到接受提供的参数的’/’的重载 我试图通过做修复: 但随后将getAverage设置为而不是 问题答案: 在Swift中没有这样的隐式转换,因此您必须自己明确地进行转换: 来自 Swift编程语言 :“永远不会将值隐式转换为其他类型。” (部分:快速浏览) 但是您现在使用的是Swift,而不是Objective-C,因此请尝试以更加面向功能的方式进行思考。您的函数可
问题内容: 该代码无法编译,编译器说f含糊。但是我认为第二种方法可以解决什么问题? 问题答案: 这是因为无法确定该方法调用是应调用变量args还是应调用float和变量args。 Java决定以这种方式来调用拓宽>装箱>变量args的方法,但是在这种情况下,两者都具有变量args。 在这种情况下,基本上将char扩展为浮动。 Java基元的扩展顺序为:
这是在参数是重载函数时重载解析如何工作中提到的更复杂的问题? 下面的代码编译起来没有任何问题: 模板参数推导似乎不是一项具有挑战性的任务-只有一个函数接受两个参数。但是,取消注释的模板重载(仍然只有一个参数)会无缘无故地破坏编译。gcc 5. x/6. x和clang 3.9的编译都失败了。 它可以用重载解析/模板参数推导规则来解释,还是应该在这些编译器中被限定为缺陷?
问题内容: 我有一个像这样初始化的数据表: 以后我想做 它工作正常,但现在我想在该请求中发送一些参数。这些参数仅在重新加载时才需要,而在表的初始化中则不需要。我怎么做?谢谢! 问题答案: 选项1- 使用preXhr.dt事件。 看到这里http://datatables.net/reference/event/ 选项2(首选) -使用ajax.data函数。 两种选择都会产生相同的结果。您的服务器