Читал книгу Макса Шлее по Qt4 — надо сказать, на фоне других очень даже ничего излагает. Но к сожалению, это исключение из правила. Зачастую отечественные авторы абсолютно не радуют.
Перевод зарубежных тоже немаловажен. Иногда попадается такое, что только печку топить.
P.S. Искал вот недавно книгу по Haskell на русском. Посмотрел на имеющиеся в продаже книги… В итоге читаю «Real World Haskell» на языке оригинала.
Надо чтобы порядок браузеров менялся рандомно при каждой загрузке этой страницы (хотя бы альтернативных браузеров — понятно, что IE все равно будет первым).
Ересь и бред — это сначала убивать, а потом увольнять ;)
А вообще, мои друзья из компании, название которой нельзя называть, предложили реализовать то же самое через шаблоны при условии, что нет необходимости задавать тип во время выполнения. Там все ваши парадигмы соблюдены.
Прочитайте мою предыдущую статью. Там я писал, что если метод в базовом классе объявлен как виртуальный, то в производных он тоже будет виртуальным независимо от того, поставите ли Вы в производном классе слово «virtual». А ставят virtual в производных классах только для того, чтобы программист, который не видел код базового класса, знал, что этот метод виртуальный.
Поэтому в данном случае нет разницы, как Вы напишете: ~CheshireCat() или virtual ~CheshireCat() — в классе Cat деструктор все равно виртуальный.
В этом случае я бы предпочел другую формулировку виртуального метода: виртуальный метод — это метод, нужная версия реализации которого выбирается на этапе выполнения, а не на этапе компиляции.
Если открыть конструкторы производных классов, то можно будет создавать объекты классов не через виртуальный конструктор. Если Вас такое поведение устраивает, то Вам вообще нет смысла использовать такую технику.
Перевод зарубежных тоже немаловажен. Иногда попадается такое, что только печку топить.
P.S. Искал вот недавно книгу по Haskell на русском. Посмотрел на имеющиеся в продаже книги… В итоге читаю «Real World Haskell» на языке оригинала.
А вообще, мои друзья из компании, название которой нельзя называть, предложили реализовать то же самое через шаблоны при условии, что нет необходимости задавать тип во время выполнения. Там все ваши парадигмы соблюдены.
#include <QtGui/QApplication>
#include <QtGui/QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel lbl("Hello, Habr!");
lbl.show();
return app.exec();
}
И всего
две калорииза 0.00$ ;) Зачем платить больше?P.S. Хотя по объему кода с Haskell, конечно, все равно не сравнить…
…это не говоря о том, что после условия в If должно быть слово Then, а End If пишется отдельно.
Поэтому в данном случае нет разницы, как Вы напишете: ~CheshireCat() или virtual ~CheshireCat() — в классе Cat деструктор все равно виртуальный.
Я приверженец идеи о том, что на любую подобную технику найдется своё применение.