我对这些规则真的很困惑:
void func(float f)
{
}
struct Foo
{
Foo(float b) {}
};
int main()
{
short b = 1;
func(b);/* WORKS FINE*/
Foo foo{ b }; /*REQUIRES NARROWING CONVERSION FROM SHORT TO FLOAT */
Foo foo2{ (short)b }; /* REQUIRES NARROWING CONVERSION FROM SHORT TO FLOAT */
Foo foo3{ (short)7 }; /* WORKS FINE */
}
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是,为什么我可以使用 Short 的左值调用 func(float),但不能将其用作构造函数的参数?
我的第二个问题是,即使我们查看将short传递给构造函数,那么当我们将r值short传递给它时它也不会抱怨。为什么会这样呢?
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |