Tag: 析构函数

从析构函数中抛出exception

大多数人说永远不会从析构函数中抛出exception – 这样做会导致未定义的行为。 Stroustrup指出: “vector析构函数明确地调用每个元素的析构函数,这意味着如果析构函数抛出,vector销毁失败……真的没有好办法来防止析构函数抛出的exception,所以库如果元素析构函数抛出不作任何保证“(来自附录E3.2) 。 这篇文章似乎是另有说法 – 抛出析构函数或多或less是可以的。 所以我的问题是这样的 – 如果从析构函数中抛出导致未定义的行为,如何处理在析构函数中发生的错误? 如果在清理操作中发生错误,您是否忽略它? 如果这是一个错误,可能会被处理堆栈,但不是正确的析构函数,是不是有意义抛出exception析构函数? 显然这些错误是罕见的,但可能的。

动态分配一个对象数组

这是一个初学者的问题,但我很久没有做C ++了,所以这里… 我有一个类包含一个动态分配的数组,说 class A { int* myArray; A() { myArray = 0; } A(int size) { myArray = new int[size]; } ~A() { // Note that as per MikeB's helpful style critique, no need to check against 0. delete [] myArray; } } 但是现在我想创建一个动态分配的这些类的数组。 这是我现在的代码: A* arrayOfAs = new A[5]; for (int i = […]