История изменений
Исправление eao197, (текущая версия) :
Сударь, вы невежа! Вы не понимаете, как работают конструкторы в C++ и что происходит при выбрасывании исключения из конструктора.
В C++ном примере у вас нет объекта типа D. Он вообще не был создан. Вы напечатали какой-то случайный мусор, поскольку указатель d у вас не был проинициализирован. Попробуйте вот так:
#include <iostream>
class Data {
public:
Data() {
v1 = 1;
throw "error";
v2 = 2;
}
public:
int v1;
int v2;
};
int main()
{
Data *d = nullptr;
try {
d = new Data();
} catch(...) { }
std::cout << d << std::endl;
}
Исходная версия eao197, :
Сударь, вы невежда! Вы не понимаете, как работают конструкторы в C++ и что происходит при выбрасывании исключения из конструктора.
В C++ном примере у вас нет объекта типа D. Он вообще не был создан. Вы напечатали какой-то случайный мусор, поскольку указатель d у вас не был проинициализирован. Попробуйте вот так:
#include <iostream>
class Data {
public:
Data() {
v1 = 1;
throw "error";
v2 = 2;
}
public:
int v1;
int v2;
};
int main()
{
Data *d = nullptr;
try {
d = new Data();
} catch(...) { }
std::cout << d << std::endl;
}