gpt4 book ai didi

c++ - 为什么构造函数没有调用数组中的第二个对象

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

考虑这个程序

#include <iostream>

using namespace std;

class sample
{
public:
sample()
{
cout << "consructor called" << endl;
throw 5;
}
void test()
{
cout << "Test function" << endl;
}
};

int main()
{
sample *s = nullptr;

try
{
s = new sample[5];
cout << "allocated" << endl;
}
catch(bad_alloc& ba)
{
cout << ba.what() << endl;
}
catch (const int& f)
{
cout << "catcting exception";
}
return 0;
}

我想流程会是这样的。

1. Allocate the memory for 5 object.
2. call the constructor for each object one by one.

但是在调用构造函数时,我抛出了一个异常,该异常已被处理。我的疑问是为什么构造函数没有被调用第二个对象??

最佳答案

对象的创建是有顺序的,不可能一下子创建完五个对象。当创建第一个对象时,您的构造函数将被调用,并且当它抛出异常时,它将控制权移至异常处理程序 block 。

您的异常处理程序将打印适当的消息并正常退出。

尝试删除 throw 5;

关于c++ - 为什么构造函数没有调用数组中的第二个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28599525/

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