gpt4 book ai didi

c++ - 为什么C++允许函数和类同名?

转载 作者:行者123 更新时间:2023-11-30 05:17:05 25 4
gpt4 key购买 nike

#include <iostream>

using namespace std;

struct A
{
A()
{
cout << "A::A()" << endl;
}
};

int A()
{
cout << "void A()" << endl;
return 0;
}

int main()
{
auto v = A();
}

输出是:

void A()

为什么 C++ 允许函数和类同名?

最佳答案

我相信这归结为与 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(和class),而不需要使用struct关键字。这引入了您所关心的歧义,但替代方案是像上面的代码这样的有效 C 代码将不是有效的 C++ 代码,这更糟糕。

关于c++ - 为什么C++允许函数和类同名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42288702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com