А если этот кусок кода используется только в этой функции, а в других нафиг не нужен, то зачем засорять внешнее пространство имён? Если всё-таки он потом в другой функции понадобится, то всегда можно будет его вытащить наверх.
Свойства, даже тривиальные, нужны, чтобы можно была возможность в будущем их изменять, не меняя интерфейс класса. Если вы будете использовать поля вместо свойств, а потом вам потребуется добавить дополнительную логику при установке или чтении какого-то поля, то вам придётся переделывать его в свойство. Даже если имя нового свойства будет совпадать со старым именем поля, то всё равно придётся перекомпилировать весь код, который его использует.
Cnt(int a, int b, int c, int d) {
xa = xb = xc = xd = 0;
try {
xa = new X(a);
xb = new X(b);
xc = new X( c);
xd = new X(d);
} catch (...) {
if (xa) delete xa;
if (xb) delete xb;
if (xc) delete xc;
if (xd) delete xd;
throw;
}
}
Немного криво выглядит, но экспоненциального роста сложности кода при увеличении числа членов класса Cnt, как видите, не происходит.
Все возможные олимпиадные задачи по программированию уже давно были придуманы и решены Петей. Когда он встречает на олимпиаде любую задачу, он просто берет её решение из своего архива.
Пятиминутное пребывание в обществе Пети увеличивает ваш IQ на 100 единиц.
Петя никогда не читает условия задач, он просто просматривает их, и за доли секунды алгоритм решения сам появляется у него в уме.
Петя может решить любую задачу на BrainFuck-е быстрее, чем вы на любом языке программирование на ваш выбор.
Петя никогда не пишет комментарии, потому что его код всегда настолько прост я понятен, что его легко могут читать даже те, кто никогда не программировал.
Петя берет несколько запасных клавиатур на каждый контест, потому что они постоянно сгорают от слишком быстрой скорости печати.
Если Петя участвует в SRM, то вам не занять первое место. Если Петя не участвует в SRM, то он problem writer.
А оператор == можно переопределить.
можно заменить на
потому что «delete 0» совершенно валидная констукция, которая просто ничего не удаляет :)
По-моему не такое уж и безумное.
Cnt(int a, int b, int c, int d) { xa = xb = xc = xd = 0; try { xa = new X(a); xb = new X(b); xc = new X( c); xd = new X(d); } catch (...) { if (xa) delete xa; if (xb) delete xb; if (xc) delete xc; if (xd) delete xd; throw; } }Немного криво выглядит, но экспоненциального роста сложности кода при увеличении числа членов класса Cnt, как видите, не происходит.
Практически ничем. Утечка памяти происходит и там и там.
Пятиминутное пребывание в обществе Пети увеличивает ваш IQ на 100 единиц.
Петя может решить любую задачу на BrainFuck-е быстрее, чем вы на любом языке программирование на ваш выбор.
Петя никогда не пишет комментарии, потому что его код всегда настолько прост я понятен, что его легко могут читать даже те, кто никогда не программировал.
Петя берет несколько запасных клавиатур на каждый контест, потому что они постоянно сгорают от слишком быстрой скорости печати.
Если Петя участвует в SRM, то вам не занять первое место. Если Петя не участвует в SRM, то он problem writer.