gpt4 book ai didi

c++ - 我们可以在 C++ 中的函数中包含函数吗?

转载 作者:IT老高 更新时间:2023-10-28 11:28:48 25 4
gpt4 key购买 nike

我的意思是这样的:

int main() 
{
void a()
{
// code
}
a();

return 0;
}

最佳答案

现代 C++ - 是的,使用 lambdas!

在当前版本的 c++(C++11、C++14 和 C++17)中,您可以在函数内部以 lambda 的形式包含函数:

int main() {
// This declares a lambda, which can be called just like a function
auto print_message = [](std::string message)
{
std::cout << message << "\n";
};

// Prints "Hello!" 10 times
for(int i = 0; i < 10; i++) {
print_message("Hello!");
}
}

Lambda 还可以通过 **capture-by-reference* 修改局部变量。通过引用捕获,lambda 可以访问在 lambda 范围内声明的所有局部变量。它可以正常修改和更改它们。

int main() {
int i = 0;
// Captures i by reference; increments it by one
auto addOne = [&] () {
i++;
};

while(i < 10) {
addOne(); //Add 1 to i
std::cout << i << "\n";
}
}

C++98 和 C++03 - 不是直接的,但可以在本地类中使用静态函数

C++ 不直接支持。

也就是说,您可以拥有本地类,并且它们可以拥有函数(非staticstatic),因此您可以在某种程度上得到它,尽管它是有点杂乱无章:

int main() // it's int, dammit!
{
struct X { // struct's as good as class
static void a()
{
}
};

X::a();

return 0;
}

但是,我会质疑实践。每个人都知道(好吧,现在你知道了,无论如何:))C++ 不支持本地函数,所以他们习惯于没有它们。然而,它们并没有用于那种杂乱无章的东西。我会在这段代码上花费很长时间,以确保它真的只允许本地功能。不好。

关于c++ - 我们可以在 C++ 中的函数中包含函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4324763/

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