gpt4 book ai didi

c++ - 这是 "Idiom"定义良好吗?

转载 作者:行者123 更新时间:2023-11-30 00:50:43 25 4
gpt4 key购买 nike

假设我有一个 C 库,它有自己的(反)初始化例程,很多库都有。

init_API();

deinit_API();

现在假设我想为用户提供另一个抽象级别,并使用静态实例化的类抽象掉这些调用。我想到的方法:

struct API_initializer{
API_initializer(){
init_API();
if(API_init_failure)
throw (APIFailureException); //important
}

~API_initializer(){
deinit_API();
}
};

struct API_initializer_holder{
static API_initializer initializer;
};

现在,我的问题是,这是明确定义的行为吗?即,是否会在某个合理的时间点调用静态构造函数,是否会正确初始化 C API 需要的所有(静态)变量?此外,抛出用户无法捕获的异常是否是一种不好的做法?

最佳答案

根据我的经验,尝试依赖静态初始化顺序是个坏主意。

一个更好的主意是摆脱持有人,然后去:

int main()
{
API_initializer foo;

// rest of program
}

如果您真的希望它在失败时抛出,则包含一个 try..catch block 。

注意。使类不可复制以防止发生事故。

关于c++ - 这是 "Idiom"定义良好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24112555/

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