- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
template <typename Derived>
class Base {
public:
void doSmth() {
// ...
static_cast<Derived*>(this)->OnParseAndHandle();
//...
}
};
class MyClass: public Base<MyClass> {
public:
void OnParseAndHandle() {
// ...
}
};
Плюсы по сравнению с виртуальными методами - нет оверхеда в рантайме, можно применять и к статическими методам.
Минусы - не может выбирать нужный метод в рантайме, и немного странно смотрится.
таки и есть, что я идиот и не понял
а множественное наследование (ты же это имел в виду?) создаст проблемы не всегда, но об этом неплохо бы знать, да
Я имею ввиду вот это:
>стасик здесь стоит как раз за тем, чтобы время сэкономить
Так точно, капитан! assert ещё ни кому не мешал экономить время
компилятор корректно пересчитывает this при даункасте
про ассерт понятно
Ты хуй! [1][2]
1) http://lurkmore.to/%D0%A2%D1%8B_%D1%85%D1%83%D0%B9
2) http://ru.wikipedia.org/wiki/%D0%A5%D1%83%D0%B9
А что... по крайней мере это выглядит серьезно и научно.
P.S. Никогда не любил составлять списки использованной литературы в универе, т.к. была проблема - эту самую литературу я почти не использовал, а ссылки у нас не особо любили.
ноу вэй
1) http://www.urbandictionary.com/define.php?term=no%20way
2) http://lurkmore.to/%D0%9D%D0%B5%D1%82_%D0%BF%D1%83%D1%82%D0 %B8
Ты меня убедил
Опять забыл список литературы[1]?
1) http://narfu.ru/agtu/www.agtu.ru/fad08f5ab5ca9486942a52596ba6582elit.html
Фу, Тарас. Как тебе не стыдно.
И поцеловал он жабу, но превратилась она не в красавицу-принцессу, а в страшную стерву-крестоблядь.
И жили они долго, но несчастливо - с постоянным непониманием и багами.
И подумал кодер: "Уж лучше б осталась ты жабой".
После свежих откровений С++11 предсказуемая, читабельно-унылая жаба смотрится куда лучше.
Конкретно по тому что ты сделал смотри boost::operators и std::rel_ops