仅初始化部分功能一次

2023-11-29

我有一个很小的函数,我想初始化一次,例如

void SomeFunc()
{
static bool DoInit = true;
if (DoInit)
   {
   CallSomeInitCode();
   DoInit = false;
   }
// The rest of the function code
}

如果此函数被多次调用,则将留下一个不必要的函数if (DoInit)这是无法优化的。那么为什么我不在其他地方(例如构造函数)进行初始化呢?因为,从逻辑上讲,这个初始化代码最适合这个函数,并且这样更容易维护,尽管事实上它每次都会进行不必要的检查。

有没有更好的方法来做到这一点而不诉诸使用上面示例中的构造?


您可以通过构建一个在其构造函数中调用初始化代码的类来完成此操作,如下所示:

class InitSomething {
public:
    InitSomething() {
        CallSomeInitCode();
    }
};

现在你可以这样做:

void SomeFunc() {
    static InitSomething myInitSomething;
    ...
}

该对象将被构造一次,执行CallSomeInitCode正好一次。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅初始化部分功能一次 的相关文章

  • .Net Core 中 String 默认不可序列化吗?

    我正在查看其他的 Fortify 静态分析安全测试 SAST 扫描报告 以识别和抑制误报 应用程序框架是C NET Core SAST 报告部分内容如下 Method1 在第 111 行将不可序列化的对象存储为 HttpSessionSta
  • 更改 Visual Studio 2015 扩展中项目内的文件 ProjectItem 的内容?

    如何更改文件的内容 ProjectItem在给定的范围内Project 我想用字符串替换它的所有内容 这个问题有解决办法吗 我想做一些改变ProjectItem CS 文件 通过使用 VSIX 包 以及我现在看到的唯一一种执行此操作的方法
  • 除了第一列之外,Gridview 行可点击?

    我使用以下代码使 gridview 的整行可单击 protected void gridMSDS RowDataBound object sender GridViewRowEventArgs e if e Row RowType Data
  • C++ 中的字符串到 LPCWSTR

    我正在尝试从字符串转换为 LPCWSTR 我使用多位 1 例如 LPCWSTR ToLPCWSTR string text LPCWSTR sw LPCWSTR text c str return sw 2 返回中文字符 LPCWSTR T
  • 获取光标相对于控件的位置 - C#

    我想获取鼠标相对于鼠标指针所在控件的位置 这意味着当我将光标置于控件的起点 左上角 时 它应该给出 0 0 我正在使用以下代码 private void panel1 MouseMove object sender MouseEventAr
  • 使用 std::string 导致 Windows“找不到入口点”[重复]

    这个问题在这里已经有答案了 当我用 G C C 编译它时 include
  • 如何在 asp .net mvc 2 中对不直接属于我的模型的对象使用 DisplayFor()?

    我确信我在这里遗漏了一些非常简单的东西 我创建了一个自定义日期时间显示模板 使用以下方法时效果很好 但是 我遇到了这样的情况 在部分控件内 我在 for 循环中迭代模型中的对象 我想要一个 DateTime 属性来使用显示模板 但我不知道如
  • 混合 VS2012 平台工具集

    我们正在从 VS2005 切换到 VS2012 update 2 我们正在构建大量 主要是控制台 本机 C 无 MFC ATL 可执行文件 它们使用几个常见的静态链接库 这些可执行文件主要在 Win7 计算机上运行 但有些也部署在较旧的 X
  • 输入缓冲区刷新

    考虑下面的代码 include
  • 如何在单独的类库中管理客户端上下文对象?

    我正在尝试创建一个库 类库 对于共享点 它将拥有所有共享点 dll 来与共享点服务器交互上传文件 文档并创建文档库和文档集 现在这个库可以被使用客户端 例如 Web 应用程序 asp net webform 或 mvc 或控制台应用程序或
  • C#中如何将委托转换为对象?

    我正在使用反射类来调用其他 dll 上的一些方法 方法的参数之一是委托类型 我想通过使用反射来调用这个方法 所以我需要将函数参数作为对象数组传递 但我找不到任何关于 如何将委托转换为对象 提前致谢 委托是一个对象 只需像平常一样创建预期的委
  • 将 libpng 链接到 android 原生项目

    我在尝试在本机 Android 项目中加载 libpng 时遇到问题 编译器似乎无法识别 libpng 函数 但可以识别类型 如 png byte 它可以正常编译类型 但如果我添加函数 则会抛出错误 这是编译输出 Windows 7 cmd
  • CS0246 找不到类型或命名空间名称“ErrorViewModel”(您是否缺少 using 指令或程序集引用?)

    我收到 CS0246 错误代码 我正在做一个 MVC net core 项目 我正在将 Razor 合并到我的 C 代码中 我在进行构建时收到此错误 我在最后一行收到错误 有人能帮我解决这个问题吗 global Microsoft AspN
  • 如何定义 Swagger UI 参数的默认值?

    我已将 Swagger Swashbuckle 集成到 NET Core 2 2 API 项目中 一切都很好 我的要求纯粹是为了方便 考虑以下 API 方法 public Model SomeEstimate SomeRequest req
  • 是否可以从.NET Core中间件检索控制器的操作结果?

    public class UsersController APIControllerBase public UsersController public Client Get return new Client ClientID 1 Las
  • 正则表达式基于组的不同替换?

    所以我对正则表达式比较陌生 并且做了一些练习 我正在玩一个简单的 混淆器 它只是寻找 dot or dot or at or at 不区分大小写 并且在匹配项之前或之后有或没有任意数量的空格 这是针对通常情况的 someemail AT d
  • 为 C++ 类播种 rand()

    我正在开发一个 C 类 它使用rand 在构造函数中 我真的希望这个班级在几乎所有方面都能照顾好自己 但我不知道在哪里播种rand 如果我播种rand 在构造函数中 每次构造我的对象类型的新实例时都会对其进行播种 因此 如果我按顺序创建 3
  • 更改预处理到文件后出现错误 1 ​​错误 LNK1104

    我必须使用预处理器 所以我改变了 配置属性 gt C gt 预处理器 gt 预处理为文件 gt 是 并得到错误 错误 1 错误 LNK1104 无法打开文件 Debug asnreal obj 这个问题的解决办法 我必须在 lib 文件的路
  • Android NDK - 仅用 C/C++ 编写

    有没有一种可能的方法可以使用 C C 编写整个 NDK 应用程序 而无需像 hello jni 示例项目 HelloJni java 中那样的 Java 入门 类 以某种方式创建一个 HelloJni c 来执行相同的操作 从 Androi
  • 任何浮点密集型代码是否会在任何基于 x86 的架构中产生位精确的结果?

    我想知道使用浮点运算的 C 或 C 代码是否会在任何基于 x86 的体系结构中产生位精确的结果 无论代码的复杂性如何 据我所知 自 Intel 8087 以来的任何 x86 架构都使用准备处理 IEEE 754 浮点数的 FPU 单元 并且

随机推荐

  • 如何在android中播放来自url的动画GIF图像?

    我正在将 giphy 集成到我的 Android 应用程序中 我怎样才能玩animated gifAndroid 中的 URL 中的图像 我应该使用ImageView WebView VideoViewETC 例如 如果我想播放动画this
  • 无法在 JavaScript 警报框中添加新行?

    我在 PHP 中生成一个字符串 然后最终将该字符串传递到 JavaScript 警报框中 我的问题是我实际上无法在警报框中添加换行符 我的代码如下所示 str This is a string n alert str This is the
  • CPython 和 PyPy 小数运算性能

    我想使用数百万个数据点 以小数表示 运行 100k 次模拟 我选择小数而不是浮点数是为了浮点精度和易于对我的逻辑进行单元测试 因为0 1 0 1 0 1对于浮点数不等于 0 3 我希望通过使用 PyPy 来加快模拟速度 但在我的测试过程中我
  • Python 中的类与类型

    我最近刚刚开始自学如何编码 我目前正在阅读想想Python 2对于 python 3 以及当它教授有关type 函数 它给出了例子type 2 哪个输出
  • Powershell 2.0 sudo 限制

    长期读者 但新海报 我已经为这个问题苦苦挣扎了一整天 这让我发疯 在搜索了这个网站和谷歌之后 我仍然陷入困境 基本上 我不知道如何在 Powershell 中实现与 Copy Item CmdLet 一起使用的 sudo 这是我的代码 简介
  • 如何在 WebSockets hybi 08+ 中构建(解构)数据帧?

    自从 Chrome 更新到 v14 以来 它们从草案第三版 to 草案第八版 我有一个在 WebSocket 上运行的内部聊天应用程序 虽然我已经让新的握手工作正常 但数据框架显然也发生了变化 我的 WebSocket 服务器基于Nugge
  • 客户端 Javascript 中的 Base64 编码和解码 [重复]

    这个问题在这里已经有答案了 JavaScript 中是否有任何方法可用于使用 Base64 编码对字符串进行编码和解码 某些浏览器 例如 Firefox Chrome Safari Opera 和 IE10 可以原生处理 Base64 看看
  • C++ 继承类中函数重载的问题

    这可能是一个菜鸟问题 对此感到抱歉 最近 当我尝试处理 C 中的一些高级内容 函数重载和继承时 我遇到了一个奇怪的问题 我将展示一个简单的例子 只是为了演示这个问题 有两个班级 classA and classB 如下 class clas
  • Scala 中的斑马拼图

    我正在尝试使用 Scala 完成 Udacity 的 CS212 但在使用 Zebra Puzzle 时遇到了问题 Python 中的一些概念并不容易转换为 Scala 尤其是对于像我这样的初学者 这些是我迄今为止管理的代码 val hou
  • 告诉 LESS 在某些特殊情况下不要惊慌并忽略奇怪的字符

    我们的服务器有一个用于 CSS 文件的自定义语言切换器 它识别某些模式和开关left right命令 除其他外 为了告诉它切换到哪里 我们使用 RIGHT and LEFT 任何需要的地方 div somecls margin RIGHT
  • 地图视图始终以我的位置为中心显示地图

    当用户按下按钮时 我使用以下代码来获取我的位置 mapview setShowsUserLocation YES 然后执行以下操作将地图置于用户位置的中心 void mapView MKMapView mapView didUpdateUs
  • 从文件部分填充数组

    我需要用文件中的数据部分填充 2 个数组并保持它们并行 但我当前的代码给了我看起来像乱码的错误 如果有人甚至可以帮助我解码错误 我将非常感激 Code Author Sam LaManna Course CSC 135 Lisa Frye
  • java.lang.NoSuchMethodException: [类 android.view.View] FirebaseRecyclerAdapter

    我正在尝试使用 FirebaseRecyclerAdapter 制作示例应用程序 但不断收到错误java lang RuntimeException java lang NoSuchMethodException
  • C# - WCF - 进程间通信

    用于进程间通信的最佳 WCF 绑定是什么 我已经在本地网络上使用了 WCF 它非常棒 我也想将它用于进程间通信 然而 我不想暴露网络上的通信 Use the 网络命名管道绑定用于同一台机器上的进程间通信 使用NetTcp绑定如果您跨越机器边
  • glutTimerFunc 问题

    我正在使用计时器函数来制作动画 但是当我将其放置在 Renderer 类中时遇到问题 void Renderer animate int value glutTimerFunc TIMERMSECS animate 0 错误 rendere
  • 如何在块循环中使用 PHPExcel 库确定文件结尾?

    使用 PHPExcel 库 我尝试迭代大约 1500 行 每行大约有 25 列 我正在使用这段代码 取自PHPExcel 运行内存为 256 512 和 1024MB Create a new Reader of the type defi
  • Eclipse:以编程方式创建首选项页面

    我正在尝试以编程方式创建首选项页面 我需要使用首选项页面而不在plugin xml 中定义首选项页面扩展点 我非常接近解决方案 我能够加载页面并在应用程序第一次加载时保存值 我的代码的核心是 PreferenceManager pmngr
  • 使用 VBA 创建具有不同计数的数据透视表

    我正在尝试使用 Excel 2013 VBA 创建一个数据透视表 并将 DISTINCT COUNT 作为值字段 我知道 如果您手动创建数据透视表 则必须选中 将此数据添加到数据模型 复选框 以便为值数据透视字段提供不同的计数选项 但我不知
  • Laravel 5.8:Homestead 重启后尚未设置门面根

    所以我正在尝试进入 Laravel 这是我第一次使用 Vagrant 所以这是我的问题 我已经通过Laravel 家园介绍并设置我的开发框 一切似乎都正常工作 我确实看到了 Laravel 默认应用程序 当结束这一天时 我已经停止了本地流浪
  • 仅初始化部分功能一次

    我有一个很小的函数 我想初始化一次 例如 void SomeFunc static bool DoInit true if DoInit CallSomeInitCode DoInit false The rest of the funct