构造函数不引发异常
Constructor not throwing exception
在下面的代码中,我想测试如果我有一个对象,该对象包含另一个构造函数引发异常的对象。但是下面的代码绝对没有任何作用。根本没有打印在控制台上。
class A
{
public:
A()
{
cout << "in A constructor" << endl;
throw "error creating A";
}
~A()
{
cout << "destructing A" << endl;
}
};
class C
{
public:
C()
{
cout <<"in C constructor" << endl;
}
~C()
{
cout << "in C destructor " << endl;
}
};
class B
{
public:
C c;
A a;
B(A a_, C c_): a(a_), c(c_){}
B(){}
};
int main()
{
try{
B b(A, C);
//B b;
}
catch(char const* s)
{
cout <<"catching" << endl;
}
}
如果在尝试块中,我会使用注释的代码,然后显示正常。
我也尝试做
B b(A(), C());
仍然什么都没有。
这是一个函数声明,带有返回类型 B
,name b
和两个类型A
和C
的未命名参数:
B b(A, C);
相同 B b(A(), C());
作为名称可以由括号(允许分组,在使用函数指针等工作时必不可少),甚至被排除在外的名称都可以由括号包裹。您可以通过
将其变成B
类型的可变b
B b(A{}, C{});
在这种情况下,卷曲牙套初始化变量初始化变量的动机之一就是消除歧义。在这里,它显然很方便。
相关文章:
- 从构造函数抛出异常时如何克服内存泄漏
- 如何编写带有异常的构造函数
- 从 C++ 中异常的构造函数引发异常
- 我正在尝试创建一个使用 c++ 中的参数包构造函数的异常类
- 稍后在构造函数中重新启动异常指令删除此指令
- 自定义异常中的用户定义的空构造函数,具有多个继承和抽象基类
- 构造函数中引发的异常
- 如何捕获源自静态分配对象的构造函数的异常?
- 从构造函数内存泄漏引发异常
- C++:如何捕获构造函数引发的异常?
- std::vector::emplace() 真的在面对抛出移动构造函数/赋值运算符时提供了强大的异常保证吗?
- V8 - 节点C++插件 - 在构造函数中引发异常会导致"致命错误:v8::ToLocalChecked Em
- 为什么要抛出引用调用复制构造函数的异常?
- std::vector 默认构造函数可以抛出异常吗?
- 如何防止构造函数在引发异常时创建对象
- 当构造函数的参数类型错误时引发异常
- 异常构造函数中的例外
- C++11 引入了采用 'const char*' 的异常构造函数.但是为什么
- 在异常构造函数中参数化错误消息是一种好的做法吗
- 异常构造函数来填充字符串流