Возможный дубликат:
можно ли использовать объявления функций внутри функций?
Я знаю, что внутри функции мы можем объявить функцию. Какая от этого польза? Не могли бы вы привести простой пример?
Возможный дубликат:
можно ли использовать объявления функций внутри функций?
Я знаю, что внутри функции мы можем объявить функцию. Какая от этого польза? Не могли бы вы привести простой пример?
В объявлении функции внутри функции мало смысла, если только вы не собираетесь определять ее позже и делать ее доступной только для этой функции, т. Е. Объявление функции инкапсулировано.
int main() {
void foo();
foo();
}
void some_other_func() {
foo(); // ERROR
}
void foo() {
}
Но это все. По сравнению с запуском Most Vexing Parse, это в лучшем случае крайне ограниченное преимущество.
some_other_func()
ПОСЛЕ реализации foo()
, у вас был бы доступ к foo()
, поэтому инкапсуляция довольно фальшивая.
- person xanatos; 05.10.2011
Насколько я знаю, определение функций внутри функций в C/C++ нестандартно, и его поддерживают только некоторые компиляторы. Однако вы можете использовать новую возможность C++, так называемые лямбда-функции.
Определение функций (или лямбда-функций) внутри других функций может быть полезным несколькими способами (в зависимости от реализации):