gpt4 book ai didi

c++ - 构造函数返回值中的异常

转载 作者:太空狗 更新时间:2023-10-29 23:47:54 24 4
gpt4 key购买 nike

假设我有一个类充当“智能指针”并在销毁时释放某种系统资源。

class Resource{
protected:
ResourceHandle h;
public:
Resource(ResourceHandle handle)
:h(handle){
}

~Resource(){
if (h)
releaseResourceHandle(h);//external function, probably from OS
}
};

我有一些函数返回用于“资源”初始化的值:

ResourceHandle allocateHandle();

现在,如果我在我的代码中这样做:

Resource resource(allocateHandle());

AND allocateHandle() 抛出异常,究竟会发生什么?崩溃会发生在构建 Resource() 期间还是构建之前?

常识告诉我,因为在 allocateHandle 返回之前抛出异常,执行甚至不会进入 Resource() 构造函数,但我对此不是很确定。这是一个正确的假设吗?

最佳答案

参数在任何函数调用之前被求值——在本例中是构造函数——。因此,在构造函数调用之前抛出异常

关于c++ - 构造函数返回值中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3329628/

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