gpt4 book ai didi

c++ - 模式名称,将值存储为函数中的静态变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:26:31 25 4
gpt4 key购买 nike

为了向自己确认它是否有效,我编写了以下代码(是的,它非常丑陋):

#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/

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