LINUX.ORG.RU

Сообщения Dimson

 

Калибровка UPS

Приобрел APC smart-ups 1000, нужно ли его калибровать?
Казалось бы не нужно, т.к. на заводе откалибровали, но упс был произведен в 2012 году, ничего разъехаться не могло?
Как вообще его правильно эксплуатировать? Нужно ли периодически разряжать?

Dimson
()

[C++] исключения, копирование

имеется следующий код:

#include <iostream>

using namespace std;

struct X {
    X() {
        cout << "X()\n";
    }
    X(X&) {
        cout << "X(X&)\n";
    }
    ~X() {
        cout << "~X()\n";
    }
};

int main()
{
    try {
        try {
            X x;
            throw x;
        }
        catch (X& x) {
            cout << "1\n";
            throw;
        }
    }
    catch(X) {
        cout << "2\n";
    }
    return 0;
}
вот что он выводит:
X()
X(X&)
~X()
1
X(X&)
2
~X()
~X()

гцц почему то копирует X при входе в catch(X). msvc не копирует.

Почему гцц ведет себя в этом случае как при catch(X x)? Как это должно работать?

В Страуструпе сказано о том что при throw копирование обязательно происходит, но про catch он как-то умалчивает.

 

Dimson
()

RSS подписка на новые темы