【发布时间】:2020-10-30 06:52:10
【问题描述】:
=====================================编辑问题========= =================== 我在一本书中读到,枚举器的转换取决于枚举器初始化为的数字。 对于 EX:在这个枚举中,第一个枚举必须转换为 int,第二个必须转换为 double(因为第二个枚举的初始化值超出了 int 的范围。)
enum name{A= INT_MAX , B};
void foo(int a)
{
print "int prameter";
}
void foo(double a)
{
print "double parameter";
}
foo(B) // must print double parameter, no?
好吧,当我们调用 foo(B) 时我们应该看到“双参数”,但我们会看到“int 参数”。 这是为什么? 枚举器的转换方式是什么?
【问题讨论】:
-
用
struct S {int i; char c}; S s;,很明显S *p = &s.a是错误的,即使&s和&s.a有相同的地址。 -
我不明白你所说的 struct S { int i; 到底是什么意思。字符 c};小号;考虑到我是 C++ 新手,如果您能解释更多,我将不胜感激。
-
我使用 struct 并行处理,您可能会注意到同样的事情。第一个成员与对象具有相同的地址(在某些情况下),因为所有
a、a[0]、a[0][0]都具有相同的地址。类型不同。
标签: c++ type-conversion overloading enumerator