我在这里阅读了一个名为Injected 类名的奇怪 C++ 功能 的奇怪 C++ 功能。
我尝试遵循简单的程序
#include <iostream>
class test
{
int s{3};
public:
int get_s()
{ return s; }
};
int main() {
class test::test s; // struct test::test s; also allowed. Why???
std::cout<<s.get_s();
}
如果我在 main() 程序的第一行用struct替换class关键字,仍然可以编译并运行良好。在此处查看现场演示。为什么?我不应该得到编译器错误吗?为什么它编译得很好?