String output = Month.JULY.getDisplayName( TextStyle.FULL , Locale.US ) ;
输出结果为:
void A()
为什么C ++允许函数和类具有相同的名称?
答案 0 :(得分:1)
我认为这归结为与C的向后兼容性。
在C中,当您宣布struct
时,您必须将其称为struct A
,而不仅仅是A
。例如:
void A() {}
struct A {};
void f()
{
A();
struct A x; // works fine
A y; // does not compile
}
在这种情况下,允许A
表示两个不同的事情是有道理的,因为它总是清楚你的意思,取决于你是否使用struct
。
在C ++中,可以直接引用struct
s(和class
es),而无需使用struct
关键字。这引入了你所关注的模糊性,但另一种选择是像上面那样的有效C代码不是有效的C ++代码,这更糟糕。
答案 1 :(得分:0)
为什么呢?因为这就是语言的方式! A::A()
函数属于与A()
不同的“域”。
它类似于名称空间,其中多个域中可以存在相同的名称。
它有点类似于拥有一千个不同的函数(或范围)都有自己的循环计数器i
。