有时我会写如下代码
struct Bob
{
Bob() {}
};
int main()
{
Bob b();
}
我想做的是使用 Bob 的默认构造函数创建一个对象 b。要修复它,我必须删除 b 之后的括号。事实证明,否则编译器将该行解释为函数原型(prototype)!
好的,我可以理解,遵守规则。但是为什么你可以把一个函数原型(prototype)放在一个函数里面呢?目的是什么?
最佳答案
大概是因为在 C 中,该语法没有其他可能的含义(没有成员函数或构造函数),所以他们将其指定为函数声明。
然后,当 C++ 继承了 C 的功能时,他们无法在不冒破坏现有代码的风险的情况下更改这种构造的含义。
如果您要问他们为什么完全允许局部函数声明,那可能是因为他们希望允许函数的作用域尽可能接近使用,或者它可能只是随时间流逝。
关于c++ - 为什么可以将函数原型(prototype)放在函数内部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17660411/