Pull to refresh
13
za4to@za4to

User

3
Subscribers
Send message
К тому же этот кусок кода может использовать локальные данные функции.
Если у вас есть некоторый объект, например экземляр анонимного класса, то как вам использовать его метод? Так же, как и методы любого другого объекта.
А как бы вы (или дядка Фаулер :) ) отрефакторили тот пример в статье, чтобы не было else if-ов?
А если этот кусок кода используется только в этой функции, а в других нафиг не нужен, то зачем засорять внешнее пространство имён? Если всё-таки он потом в другой функции понадобится, то всегда можно будет его вытащить наверх.
Если поле не является immutable, то его копированние в геттере является стандартной практикой.

А оператор == можно переопределить.
Свойства, даже тривиальные, нужны, чтобы можно была возможность в будущем их изменять, не меняя интерфейс класса. Если вы будете использовать поля вместо свойств, а потом вам потребуется добавить дополнительную логику при установке или чтении какого-то поля, то вам придётся переделывать его в свойство. Даже если имя нового свойства будет совпадать со старым именем поля, то всё равно придётся перекомпилировать весь код, который его использует.
Вы можете получить доступ к полю, а не к свойству.
Возможно, имелись в виду inner classes.
У людей слишком увлекшихся олимпиадами действительно часто возникают проблемы с учёбой. Некоторых даже исключают.
Кстати
if (xa) delete xa;

можно заменить на
delete xa;

потому что «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, как видите, не происходит.
> чем отличается…
Практически ничем. Утечка памяти происходит и там и там.
Потому что в этом случае также не вызывается деструктор для объекта, на который указывает ia, если при вызове «new X(b)» выбрасывается исключение.
Может ли Петя придумать задачу, которую сам не сможет решить?
erni, может всё-таки переведешь факты для TopCoder-а, а то никто не переводит...
Все возможные олимпиадные задачи по программированию уже давно были придуманы и решены Петей. Когда он встречает на олимпиаде любую задачу, он просто берет её решение из своего архива.

Пятиминутное пребывание в обществе Пети увеличивает ваш IQ на 100 единиц.
Петя никогда не читает условия задач, он просто просматривает их, и за доли секунды алгоритм решения сам появляется у него в уме.

Петя может решить любую задачу на BrainFuck-е быстрее, чем вы на любом языке программирование на ваш выбор.

Петя никогда не пишет комментарии, потому что его код всегда настолько прост я понятен, что его легко могут читать даже те, кто никогда не программировал.

Петя берет несколько запасных клавиатур на каждый контест, потому что они постоянно сгорают от слишком быстрой скорости печати.

Если Петя участвует в SRM, то вам не занять первое место. Если Петя не участвует в SRM, то он problem writer.

Information

Rating
Does not participate
Location
Россия
Registered