Если вы дочитали статью до конца, то могли увидеть что в последней версии, ни new, ни delete, ни виртуализация напрямую не используется.
Другое дело что, если мне не изменяется память, тот же std::function именно через виртуализацию и сделан.
Недостаток вашей реализации в том, что вызвать можно только какую-то отдельную функцию, в моей-же можно вызвать просто произвольный код. Хотя некоторые вещи, такие как ваш второй пример, всё-же удобнее делать вашей.
Мне так видится, что закрывающий код вообще не должен бросать эксепшены, та же проблема может быть в любом деструкторе. Можно, конечно, вызывать этот блок в пустом try..catch, вот только это совсем не корректно.
У меня, вот, давно мелькают такие мысли
Неизвестно кто наносит больший вред обществу: преступники или МВД/ФСБ.
Возможно, стоило бы их расформировать и ввести механизм выборных шрифов/судей.
Нда, не пишите так больше.
Даже не говоря о том, что будет если в структуре встретится к примеру что-нибудь типа std::string.
Это нарушает все нормы языка, и имеет кучую сайд эфектов.
Дичайше интересная статья.
Точно такой-же подход можно использовать, что-бы удобно и красиво реализовать проперти.
В принципе, от последнего макроса можно отказаться, если использовать не статические члены, а статические функции со статическими же переменными внутри.
ps. Очень жаль, что действительно интересная техничная статья имеет такой низкий рейтинг, хабр уже не торт
Почему — про это можно написать целую статью, правда это не формат для хабра. Если интересно, могу опубликовать у себя в ЖЖ, а здесь разместить ссылку.
В двух словах: человеку, который не имеет доступа к разностаронней информации, можно навязать практически любую точку зрения.
Кроме того, можно творить совершенно жуткие дела, если про это никто не узнает.
Я, наверно, сейчас уйду в глубокие минуса, но я считаю что:
Да, он имеет такое право, как бы мерзко это не выглядело со стороны нормальных людей.
И пока он не прикоснётся к ребёнку( или пока не предпринял такую попытку ), т.е. не нанесёт обьективный вред другому человеку — сажать его не за что.( хотя взять на карандаш, конечно же, нужно )
А если без ссылки — то это уже отдельный акт клеветы, за который можно подать в суд.
С гос.тайной — виноват только тот, кто её обнародовал. В обоих случаях краеугольным камнем является преступление, а информация — это как круги по воде.
Сам подход, когда кто-то определяет какую информацию можно подвергнуть цензурированию, в корне порочный, и в конечном итоге, ведёт к диктатуре.
Знаете историю про марш нацистов в америке? Про еврея, прошедшего концлагерь и защищавшего право нацистов на марш? Он сказал тогда что те, кто борётся с этим правом, делает для нацизма гаразда больше, чем те, кто идёт этим маршем.
Тут есть один не очевидный нюанс: не следует путать саму информацию как таковую, с действием по приданию ей огласки.
Тот кто создал клеветническую информацию, т.е. оклеветал другого человека-должен понести наказание, но не тот кто это перепечатал, со ссылкой на оригинал.
С охраняемой законом информацией — точно так-же. Тот кто имеет к ней доступ — должен нести ответственость за её огласку.
Далее, да, пропаганда нарушения закона — должна быть без ограничений, как минимум потому, что конституцией нам гарантирована свобода слова. Закон может быть бредовым, противоречивым, наконец даже запрещать себя обсуждать, и это — безусловное зло.
Кроме того, разница между обсуждением, озвучиванием достоверной информации и пропагандой — весьма условна. Если я скажу, что коэффициент вредности и привыкания у травы ниже, чем у алкоголя, это может считаться пропагандой?
Хм, меня всегда умиляло, когда вам подобные защитники общества, говорят о пагубной информации.
Объясните мне этот термин, пожалуйста, так как я в принципе не могу понять, как информация может быть пагубной( я здесь не рассматриваю информацию, к которой не должны иметь доступ дети, и.к. это совершенно отдельный вопрос )
И туда-же: почему некоторые люди считают, что имеют моральное право ограничить свободный обмен информацией между другими людьми, просто потому, что эта информация им не нравится.
Здесь — test\hookproc\HookProcTest.cpp все примеры, работающие на текущий момент, описание действительно стоит поправить, просто не планировал это публиковать нигде, пока эту статью не увидел.
Конечно, она не дотягивает по могуществу до великого творения от микрософт, зато маленькая, открытая и моя )).
Сейчас он работает на x32, хотя и не очень стабильно, да и код ещё бяка, но если всё пойдёт нормально и ко мне не наведается птица обломинго то через пару месяцев появится и x64 версия.
Кому интересно — может посмотреть здесь
Давайте отделять мух от котлет: что общего между употреблением и преступлением на почве употребления? Для примера: "Меня затрахали на работе, поэтому я ударил жену", может давайте работу запретим? ;)
В реализации исключений на С++ есть другой фатальный недостаток — это нечёткая спецификация ислучений в функциях, вот корень всех зол. Если у функции специфицированы исключения, то это не даёт никаких гарантий что она бросает только их.
Называть абсолютно незнакомого человека дураком, без сомнения, очень умно. Но я всё же останусь при своём мнении: к насилию, как правило, прибегают когда уровень интеллектуального развития не позволяет решить проблему в ином ключе. Да, бывают ситуации, когда насилие неизбежно, но с моей точки зрения описанная ситуация таковой не являлась.
И да, и нет.
Вы привели свои примеры, я приведу свои. Есть масса замечательного старого софта( да. конечно, в первую очередь игрушки конечно :-)) ), который уже давным давно не поддерживается, и что-бы его запустить, нужны танцы с бубном, которые не всегда помогают. В случаи открытия исходников, можно было-бы пофиксить это одним движением руки, и осчастливить всё сообщество.
Насчёт второго примера — тоже приведу свой контр пример с гэймдева( извините, наболело ): Когда к гениальной игрушке пишется сиквел, причём пишется людьми, бесконечно далёкими от производства оригинала, просто по тому что права на этот брэнд принадлежат одной конторе, а делала её другая. И в результате имеем эталонное уг, под наклейкой ТОЙ самой игры. Или например для многих игрушек не пишутся продолжения, потомучто владельцы бренда просто положили его в долгий ящик. Я согласен что обладатели изначальных прав должны получить прибыль со своего имущества, я против того, чтобы они. пользуясь своими правами ограничивали творческий процесс других.
Другое дело что, если мне не изменяется память, тот же std::function именно через виртуализацию и сделан.
Неизвестно кто наносит больший вред обществу: преступники или МВД/ФСБ.
Возможно, стоило бы их расформировать и ввести механизм выборных шрифов/судей.
Даже не говоря о том, что будет если в структуре встретится к примеру что-нибудь типа std::string.
Это нарушает все нормы языка, и имеет кучую сайд эфектов.
Точно такой-же подход можно использовать, что-бы удобно и красиво реализовать проперти.
В принципе, от последнего макроса можно отказаться, если использовать не статические члены, а статические функции со статическими же переменными внутри.
ps. Очень жаль, что действительно интересная техничная статья имеет такой низкий рейтинг, хабр уже не торт
В двух словах: человеку, который не имеет доступа к разностаронней информации, можно навязать практически любую точку зрения.
Кроме того, можно творить совершенно жуткие дела, если про это никто не узнает.
Да, он имеет такое право, как бы мерзко это не выглядело со стороны нормальных людей.
И пока он не прикоснётся к ребёнку( или пока не предпринял такую попытку ), т.е. не нанесёт обьективный вред другому человеку — сажать его не за что.( хотя взять на карандаш, конечно же, нужно )
С гос.тайной — виноват только тот, кто её обнародовал. В обоих случаях краеугольным камнем является преступление, а информация — это как круги по воде.
Сам подход, когда кто-то определяет какую информацию можно подвергнуть цензурированию, в корне порочный, и в конечном итоге, ведёт к диктатуре.
Знаете историю про марш нацистов в америке? Про еврея, прошедшего концлагерь и защищавшего право нацистов на марш? Он сказал тогда что те, кто борётся с этим правом, делает для нацизма гаразда больше, чем те, кто идёт этим маршем.
Тот кто создал клеветническую информацию, т.е. оклеветал другого человека-должен понести наказание, но не тот кто это перепечатал, со ссылкой на оригинал.
С охраняемой законом информацией — точно так-же. Тот кто имеет к ней доступ — должен нести ответственость за её огласку.
Далее, да, пропаганда нарушения закона — должна быть без ограничений, как минимум потому, что конституцией нам гарантирована свобода слова. Закон может быть бредовым, противоречивым, наконец даже запрещать себя обсуждать, и это — безусловное зло.
Кроме того, разница между обсуждением, озвучиванием достоверной информации и пропагандой — весьма условна. Если я скажу, что коэффициент вредности и привыкания у травы ниже, чем у алкоголя, это может считаться пропагандой?
Объясните мне этот термин, пожалуйста, так как я в принципе не могу понять, как информация может быть пагубной( я здесь не рассматриваю информацию, к которой не должны иметь доступ дети, и.к. это совершенно отдельный вопрос )
И туда-же: почему некоторые люди считают, что имеют моральное право ограничить свободный обмен информацией между другими людьми, просто потому, что эта информация им не нравится.
auto& hook = SD_HP_CREATE_HOOK( MessageBoxA, "user32.dll" );
hook.setActive(true);
hook.setCallback( boost::bind( consoleMsg, _3 ) );
Конечно, она не дотягивает по могуществу до великого творения от микрософт, зато маленькая, открытая и моя )).
Сейчас он работает на x32, хотя и не очень стабильно, да и код ещё бяка, но если всё пойдёт нормально и ко мне не наведается птица обломинго то через пару месяцев появится и x64 версия.
Кому интересно — может посмотреть здесь
Вы привели свои примеры, я приведу свои. Есть масса замечательного старого софта( да. конечно, в первую очередь игрушки конечно :-)) ), который уже давным давно не поддерживается, и что-бы его запустить, нужны танцы с бубном, которые не всегда помогают. В случаи открытия исходников, можно было-бы пофиксить это одним движением руки, и осчастливить всё сообщество.
Насчёт второго примера — тоже приведу свой контр пример с гэймдева( извините, наболело ): Когда к гениальной игрушке пишется сиквел, причём пишется людьми, бесконечно далёкими от производства оригинала, просто по тому что права на этот брэнд принадлежат одной конторе, а делала её другая. И в результате имеем эталонное уг, под наклейкой ТОЙ самой игры. Или например для многих игрушек не пишутся продолжения, потомучто владельцы бренда просто положили его в долгий ящик. Я согласен что обладатели изначальных прав должны получить прибыль со своего имущества, я против того, чтобы они. пользуясь своими правами ограничивали творческий процесс других.