为了向自己确认它是否有效,我编写了以下代码(是的,它非常丑陋):
#include <iostream>
int* static_int(int i)
{
static int j;
j = i;
return &j;
}
int main ()
{
int* s_int = static_int(5);
static_int(6);
std::cout << *s_int << std::endl;
}
代码按预期工作并打印 6
。
目前,我想不出一个用例没有更好的方法来做这样的事情,但我想知道,无论是否推荐,这种编程模式是否有定义名字?
最佳答案
在 C++ 中,这不是一个非常常用的模式。通常数据会存储在对象中,而不是作为函数的静态。但是,像这样在函数中声明的静态变量保证(包括线程安全)只创建一次。这对很多事情都有用。例如,如果您考虑一下,您创建的代码会创建一个整数单例:即此函数创建并返回对一个整数的引用,该引用始终是同一个整数。无论该函数被调用多少次或在多少个线程中都是如此。只有一个整数 j 的拷贝将永远存在。您可以阅读更多关于单例模式的信息,只需 Google 一下,它是众所周知的。另一个用途是确保某些函数仅使用保护变量调用一次:
void output_guard(){
bool guard = func_call_once();
}
这确保函数 func_call_once 只被调用一次,这通常很有用。
关于c++ - 模式名称,将值存储为函数中的静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26490106/