有时我会编写如下代码
struct Bob
{
Bob() {}
};
int main()
{
Bob b();
}
我想要做的是使用Bob的默认构造函数创建一个对象b。为了解决这个问题,我必须在b之后删除括号。事实证明,编译器会将该行解释为函数原型!
好的,我可以理解遵守规则。但是为什么你可以在函数中放入一个函数原型呢?目的是什么?
答案 0 :(得分:2)
大概是因为在C中语法没有其他可能的含义(没有成员函数或构造函数)所以他们将它指定为函数声明。
然后,当C ++从C继承了这些功能时,他们无法改变这种结构的含义而不会有现有代码破坏的风险。
如果你问他们为什么允许本地函数声明,那可能是因为他们希望允许函数尽可能地使用范围,或者它可能只是丢失了。