<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654714</guid>
        <pubDate>Mon, 22 Feb 2016 11:00:46 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654714</link>
        <description><![CDATA[Qraizer: Это я уже всё понял, <strong class='tag-b'>leo</strong>. Спасибо, однако, я ожидал от <strong class='tag-b'>Shaggy</strong> подтверждения. Другими словами, в Плюсах это само собой разумеющиеся поведение, ибо по дефолту абстрактные классы, каковые мы используем в качестве интерфейсов, не наследуются виртуально, тогда как в Дельфи дефолтовое поведение интерфейсов как раз обратное. Прикол-то как раз в том, что что интерфейсы, что абстрактные классы для реализации одних и тех же парадигм в обоих языках подходят одинаково, тогда как когда мы допытывались у них, как они собираются реализовывать отдельные реализации одного и того же интерфейса, если вдруг понадобится, в ответ было либо &quot;такого никогда не нужно&quot;, либо приводился пример с отдельными реализациями в разных классах, с последующим агрегированием и делегированием, что вообще-то больше на подпорку похоже. Вот мне и интересно, почему нам сразу не показали, что делегированием можно управлять и на уровне интерфейсов, а не только реализаций. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2016-02-22T14:02:14+03:00">22.02.16, 11:02</time></span></span><br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray">Впрочем, возможно и показывали. Я уходил из темы, когда тут начали лить воду по десятку страниц в час.</span>]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654695</guid>
        <pubDate>Mon, 22 Feb 2016 09:14:39 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654695</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654518'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2016-02-21T03:24:27+00:00">21.02.16, 03:24</time></span><div class='quote '>Почему ручная делегация не затрагивает унаследованный от базового интерфейса метод расширяющего интерфейса? </div></div><br>
Потому, что она &quot;придумана&quot; не просто для возможности &quot;алиасинга имен&quot; интерфейсного и реализующего метода, а как раз для задания различных&#092;индивидуальных реализаций для одноименных методов разных интерфейсов - не важно, связанных между собой &quot;родственными узами&quot; или нет. Поэтому делегация IMyInterface.Handle = ...; относится только к реализации указанного интерфейса IMyInterface и ни к какому другому (ни к наследнику, ни к предку). Поэтому если ты по каким-то причинам хочешь использовать другое имя реализующего метода, то нужно делегировать его всем реализуемым интерфейсам<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">TMyObject = class(TInterfacedObject, IMyInterface, IMyInterface2)</div><div class="code_line">protected</div><div class="code_line">&nbsp;&nbsp; procedure _Handle;</div><div class="code_line">&nbsp;&nbsp; procedure IMyInterface.Handle = _Handle;</div><div class="code_line">&nbsp;&nbsp; procedure IMyInterface2.Handle = _Handle; //тут можно задать и другой реализующий метод</div><div class="code_line">end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654518'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2016-02-21T03:24:27+00:00">21.02.16, 03:24</time></span><div class='quote '>если IMyInterface2 расширяет IMyInterface, то IMyInterface.Handle в равной мере принадлежит обоим интерфейсам</div></div><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654655'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2016-02-21T18:33:04+00:00">21.02.16, 18:33</time></span><div class='quote '>Я понимаю так, что расширение – это создание нового на основе существующего, при этом новый включает в себя из него всё.</div></div><br>
Вопрос в том, что &quot;включает&quot; и что &quot;в равной мере принадлежит&quot;. Расширение&#092;наследование интерфейса означает наследование деклараций методов и последовательность расположения их адресов в vmt&#092;vtable. Однако то, что унаследованный IMyInterface2 не добавляет новых методов к IMyInterface, не означает, что при реализации этих интерфейсов одним объектом они непременно должны ссылаться на одну и ту же (разделяемую) vmt - это могут быть две разные vmt, идентичные по содержанию. И как было сказано выше, использование делегирования метода как раз и подразумевает, что один и тот же метод может иметь разные реализации у предка и наследника, и соотв-но они 100% будут иметь разные vmt. Поэтому в том, что <em class='tag-i'>&quot;один и тот же интерфейс IMyInterface, будучи в TMyObject доступным по двум маршрутам, ... присутствует в двух экземплярах&quot;</em>, ничего удивительного нет, т.к. во-первых, мы сами этого &quot;захотели&quot;, используя делегирование, во-вторых, это &quot;не запрещено законом&quot; :)]]></description>
        <author>leo</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654655</guid>
        <pubDate>Sun, 21 Feb 2016 18:33:04 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654655</link>
        <description><![CDATA[Qraizer: Ну, как бы как я себе и представлял.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654522'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2016-02-21T05:44:35+00:00">21.02.16, 05:44</time></span><div class='quote '>с сообщением похоже просто баг, я уже отправил репорт</div></div>Ага. Вот теперь у меня всё срослось. Вроде.<br>
Тогда в заключение: расширение интерфейса и его наследование в вашей терминологии – в чём разница? Я понимаю так, что расширение – это создание нового на основе существующего, при этом новый включает в себя из него всё. Наследование интерфейса как термин по-хорошему вообще не используется, и вместо него существует термин &quot;реализация интерфейса&quot;. Получается, что нельзя создать новый интерфейс, расширив более одного? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2016-02-21T18:39:19+00:00">21.02.16, 18:39</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654522'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2016-02-21T05:44:35+00:00">21.02.16, 05:44</time></span><div class='quote '>например, в самой IDE есть галочка - импортировать интерфейсы из TLB c safecall или stdcall методами <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Safecall functions automatically implement COM conventions for errors and exception handling, converting HRESULT error codes into exceptions. If you are entering function declarations in RIDL, you must explicitly specify the calling convention as safecall or stdcall. </div></div></div></div>А, т.е. компилятор для safecall фактически создаёт некий прокси над тем, что написал програмер. О как.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654522</guid>
        <pubDate>Sun, 21 Feb 2016 05:44:35 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654522</link>
        <description><![CDATA[Shaggy: от интерфейса не наследуются, его реализуют(как и получают) целиком, как неделимую единицу<br>
поэтому в записи:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">TMyObject = class(TInterfacedObject, IMyInterface, IMyInterface2)</div></ol></div></div></div></div><br>
IMyInterface реализуется один раз и доступен по одному маршруту<br>
в Interface table этого класса всего три записи: IInterface, IMyInterface, IMyInterface2<br>
<br>
а из этого класса:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">TMyObject2 = class(TObject, IMyInterface2)</div></ol></div></div></div></div><br>
мы не сможем получить даже IInterface т.к.<br>
в Interface table этого класса одна запись: IMyInterface2<br>
<br>
но:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Obj:TMyObject2;</div><div class="code_line">&nbsp;&nbsp;Intf:IMyInterface2</div><div class="code_line">&nbsp;&nbsp;I:IInterface;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">&nbsp;&nbsp;Intf:=Obj as IMyInterface2; // получение интерфейса</div><div class="code_line">&nbsp;&nbsp;// или</div><div class="code_line">&nbsp;&nbsp;Intf:=Obj; // неявный as</div><div class="code_line">&nbsp;&nbsp;..</div><div class="code_line">&nbsp;&nbsp;I:=Obj; // неявный as, но облом, не реализован IInterface</div><div class="code_line">&nbsp;&nbsp;I:=Intf; // тут, т.к. IMyInterface наследуется от IInterface, просто усечение</div></ol></div></div></div></div><br>
<br>
пример из жизни:<br>
в кафешке под пиво можно заказать набор закусок с соусами<br>
мне соусы не нужны, но:<br>
набор готовится с соусами и заказать можно только целиком (реализация и получение)<br>
но после получения заказа соус можно выкинуть (усечение)<br>
 :) <br>
<br>
с сообщением похоже просто баг, я уже отправил репорт<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654518'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2016-02-21T03:24:27+00:00">21.02.16, 03:24</time></span><div class='quote '>а это, случайно, не грязный хак?</div></div><br>
ну как сказать...<br>
<br>
например, в самой IDE есть галочка - импортировать интерфейсы из TLB c safecall или stdcall методами <br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Safecall functions automatically implement COM conventions for errors and exception handling, converting HRESULT error codes into exceptions. If you are entering function declarations in RIDL, you must explicitly specify the calling convention as safecall or stdcall. </div></div><br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2016-02-21T06:01:57+00:00">21.02.16, 06:01</time></span></span><br>
и да, правильнее всё-таки говорить о расширении интерфейсов, а не о наследовании <br>
т.к. при такой записи (если бы она была разрешена)<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;IMyIntf3 = interface(IMyIntf, IMyIntf2)</div></ol></div></div></div></div><br>
мы бы поимели ваши проблемы: дублирование _AddRef, _Release, QyeryInterface <br>
(и это только в самом простом случае)]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654518</guid>
        <pubDate>Sun, 21 Feb 2016 03:24:27 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654518</link>
        <description><![CDATA[Qraizer: Вот в этом-то и был вопрос: если IMyInterface2 расширяет IMyInterface, то IMyInterface.Handle в равной мере принадлежит обоим интерфейсам. Т.е. прикол в том, что ручная делегация не затрагивает IMyInterface2, и это не ошибка модели интерфейсов в языке, а тупо нефик лезть руками в вещи, которые легко сломать, если не понимаешь, что делаешь? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2016-02-21T03:30:43+00:00">21.02.16, 03:30</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654516'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2016-02-21T02:00:32+00:00">21.02.16, 02:00</time></span><div class='quote '>PS с т.з. языка IMyInterface, IMyInterface2 - это два разных типа <br>
это не зависит от наличия и значения GUID&#39;а</div></div>Ну это-то понятно. Другое дело, что один из них является подтипом другого и в этом смысле полностью заменяем им, но не наоборот (что, впрочем, при пустом IMyInterface2 не имеет значения). <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2016-02-21T03:47:39+00:00">21.02.16, 03:47</time></span></span><br>
Тогда дополнительно ещё три вопроса:<ol class="tag-list" type="1"><li>Почему ручная делегация не затрагивает унаследованный от базового интерфейса метод расширяющего интерфейса? Тут припоминается кипели баталии касательно того, что интерфейсы просто нужно реализовать где-нибудь, и пофик, как они там сводятся в реализации, и что, мол, у абстрактных классов такой фигни тем, поэтому фэйл. А на поверку выходит, что один и тот же интерфейс IMyInterface, будучи в TMyObject доступным по двум маршрутам, в Плюсах как и положено отлично сливается в одну копию, а в Дельфях присутствует в двух экземплярах, и только усилиями самого компилятора этого не заметно, до поры до времени.</li><li>Не является ли это свидетельством того, что модель абстрактных классов всё-таки более обща, поэтому, пусть и с акцентом наоборот, но Дельфи, как и Плюсы, позволяют при необходимости не сливать несколько одинаковых интерфейсов в одну копию?</li><li>Почему в ошибке фигурирует IMyInterface, который реализован, вместо IMyInterface2, посредством которого IMyInterface доступен вторым маршрутом? Вообще, какие там маршруты получаются в итоге: IMyInterface2.IMyInterface.Handle и IMyInterface.Handle? Или же вместо первого всё-таки просто IMyInterface2.Handle?</li></ol>Я не придираюсь, я хочу разобраться. На последний вопрос и в контексте Плюсов не так-то просто ответить. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2016-02-21T03:53:15+00:00">21.02.16, 03:53</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654516'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2016-02-21T02:00:32+00:00">21.02.16, 02:00</time></span><div class='quote '>это конечно чревато, но иногда удобно<br>
...</div></div>Хм... а это, случайно, не грязный хак? safecall кем обеспечивается? Разве не самим методом?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654516</guid>
        <pubDate>Sun, 21 Feb 2016 02:00:32 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654516</link>
        <description><![CDATA[Shaggy: неверное имя в сообщении, похоже баг<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654483'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2016-02-20T20:56:12+00:00">20.02.16, 20:56</time></span><div class='quote '>Дельфисты, поясните, плз, что тут не так:</div></div><br>
класс обязан выполнить два контракта:<br>
<br>
1. автопилот(сопоставление по имени)<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">TMyObject = class(TInterfacedObject, IMyInterface, IMyInterface2) </div><div class="code_line">&nbsp;&nbsp;protected</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Handle;</div><div class="code_line">&nbsp;&nbsp;end;</div></ol></div></div></div></div><br>
<br>
а) метод Handle в классе есть - контракт IMyInterface выполнен<br>
б) метод Handle в классе есть - контракт IMyInterface2 выполнен<br>
ок<br>
<br>
2. ручное управление<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">TMyObject = class(TInterfacedObject, IMyInterface, IMyInterface2)</div><div class="code_line">&nbsp;&nbsp;protected</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure _Handle;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure IMyInterface.Handle = _Handle;</div><div class="code_line">&nbsp;&nbsp;end;</div></ol></div></div></div></div><br>
а) контракт IMyInterface выполняется с помощью метода _Handle<br>
б) метод Handle отсутствует -  - контракт IMyInterface2 НЕ выполнен<br>
фейл<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3654483'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2016-02-20T20:56:12+00:00">20.02.16, 20:56</time></span><div class='quote '>Даже на Плюсах проверил:</div></div><br>
шикарно :lool: <br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;IMyInterface = interface</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Handle;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IMyInterface2 = interface(IMyInterface)</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TMyObject = class(TInterfacedObject, IMyInterface, IMyInterface2)</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure _Handle;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Handle;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TMyObject._Handle;</div><div class="code_line">begin</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TMyObject.Handle;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;_Handle;</div><div class="code_line">end;</div></ol></div></div></div></div><br>
тоже работает :lol: <br>
<br>
PS с т.з. языка IMyInterface, IMyInterface2 - это два разных типа <br>
это не зависит от наличия и значения GUID&#39;а<br>
<br>
GUID можно указать любой, компилятор это не контролирует<br>
это конечно чревато, но иногда удобно<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;IMyInterface = interface [&#39;GUID&#39;]</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Handle; safecall;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IMyInterface2 = interface [&#39;GUID&#39;]</div><div class="code_line">&nbsp;&nbsp; &nbsp;function Handle:HRESULT; stdcall;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TMyObject = class(TInterfacedObject, IMyInterface)</div><div class="code_line">&nbsp;&nbsp;public</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Handle;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;...</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;Intf:=Obj as IMyInterface; // и далее работаем с исп. исключений</div><div class="code_line">&nbsp;&nbsp;Intf:=Obj as IMyInterface2; // исп. коды ошибок</div></ol></div></div></div></div>]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654483</guid>
        <pubDate>Sat, 20 Feb 2016 20:56:12 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3654483</link>
        <description><![CDATA[Qraizer: Дельфисты, поясните, плз, что тут не так:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;IMyInterface = interface &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[&#39;некий GUID&#39;]</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Handle;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;IMyInterface2 = interface(IMyInterface) [&#39;некий другой GUID&#39;]</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TMyObject = class(TInterfacedObject, IMyInterface, IMyInterface2) // E2291: Missing implementation of interface method IMyInterface.Handle.</div><div class="code_line">&nbsp;&nbsp;protected</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure _Handle;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure IMyInterface.Handle = _Handle;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TMyObject._Handle;</div><div class="code_line">begin</div><div class="code_line">end;</div></ol></div></div></div></div>С моим пониманием интерфейсов всё должно быть в порядке. Даже на Плюсах проверил:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">class IMyInterface</div><div class="code_line">{</div><div class="code_line">public:</div><div class="code_line">&nbsp;&nbsp;virtual void Handle() = 0;</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">class IMyInterface2: public IMyInterface</div><div class="code_line">{</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">class TMyObject: virtual public IMyInterface, virtual public IMyInterface2</div><div class="code_line">{</div><div class="code_line">protected:</div><div class="code_line">&nbsp;&nbsp;void _Handle() {}</div><div class="code_line">&nbsp;&nbsp;void Handle() { _Handle(); }</div><div class="code_line">};</div><div class="code_line">&nbsp;</div><div class="code_line">TMyObject a;</div></ol></div></div></div></div>Или я чего-то не так понимаю в интерфейсах? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2016-02-20T20:59:36+00:00">20.02.16, 20:59</time></span></span><br>
P.S. Правильно ли я понимаю, что причина в разных GUID, из-за чего IMyInterface.Handle и IMyInterface2.Handle тоже разные, и если б GUID не различались (это вообще возможно?), то и проблемы б не было?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389642</guid>
        <pubDate>Fri, 20 Dec 2013 15:30:39 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389642</link>
        <description><![CDATA[Qraizer: Та я ж забуду туда заглядывать. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-20T15:31:05+00:00">20.12.13, 15:31</time></span></span><br>
А&#33; Подписка ж есть. Да, похоже ты прав. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-20T15:31:39+00:00">20.12.13, 15:31</time></span></span><br>
О&#33; А обсуждение можно и Плюсовом разделе оформить. Точно.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389631</guid>
        <pubDate>Fri, 20 Dec 2013 14:50:55 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389631</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389614'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-20T13:35:06+00:00">20.12.13, 13:35</time></span><div class='quote '>но я там редкий гость</div></div><br>
Ну и что, что редкий? Там и публикуй.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389614</guid>
        <pubDate>Fri, 20 Dec 2013 13:35:06 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389614</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389255'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T17:10:45+00:00">19.12.13, 17:10</time></span><div class='quote '>Ну, тогда измените мой пример.</div></div>Зачем? Ты понял мою мысль, я понял твою. Я ж не говорю, мол, бесполезная фича, я говорю, без неё обойтись можно практически безболезненно. Для сравнения: без лямбд тоже обойтись можно, но отнюдь не так безболезненно.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389255'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T17:10:45+00:00">19.12.13, 17:10</time></span><div class='quote '>Т.е. вы таки покажете код, который гарантированно на любом компиляторе покажет мне требуемую диагностику?</div></div>Если б он был, не требовалось бы ничего нового стандартизировать. Фактически же, разница примерно как с неявным int-ом: в C это варнинг, в C++ - ошибка.<br>
<br>
P.S. Когда занимался мультиметодами, интеловый компилер достал просто этим варнингом. Но там так было нужно, это не ошибка. Получалось что-то вроде (после разворачивания списков типов):<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">template &#60;typename T&#62; class Value { virtual T doIt() = 0; };</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename T1, typename T2&#62;</div><div class="code_line">class A: public Value&#60;T1&#62;, public Value&#60;T2&#62; { /* ... */ };</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename T1, typename T2&#62;</div><div class="code_line">class B1: public A&#60;T1, T2&#62; { virtual T1 doIt(); };</div><div class="code_line">&nbsp;</div><div class="code_line">template &#60;typename T1, typename T2&#62;</div><div class="code_line">class B2: public B1&#60;T1, T2&#62; { virtual T2 doIt(); };</div></ol></div></div></div></div>Класс A использовался для восстановления динамического типа Tx из базового T посредством вызова селектора Value&lt;&gt;::doIt(). Список типов из вот таких вот A итерировался по всем параметрам мультиметода, восстанавливая динамический тип каждого.<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-20T13:45:34+00:00">20.12.13, 13:45</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389255'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T17:10:45+00:00">19.12.13, 17:10</time></span><div class='quote '>Оставив в стороне необходимость фичи, я не понимаю, каким образом она является <em class='tag-i'>синтаксическим сахаром</em>?</div></div>Ну не синтаксическим. Всё равно сахаром. Разве сложно это сделать самостоятельно? При определённых условиях. Я ради прикола когда-то реализовал подобную вещь на BC4.5 ещё, который в отличие от VC и Intel поддерживал спецификацию исключений для функций, и использовал её, чтобы протащить неожидаемое исключение сквозь спецификацию наружу. При условии единого полиморфного предка для всех классов исключений с фабрикой копирования контейнер сооружается легко. Вот только не пригодилось ни разу. Вся роль нового Стандарта тут, это обязывание компиляторов делиться скрытой RTTI с реализациями STL, чтобы те могли предоставить готовый же std::nested_exception без упомянутых ограничений. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-20T14:01:08+00:00">20.12.13, 14:01</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389255'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T17:10:45+00:00">19.12.13, 17:10</time></span><div class='quote '>С чего бы? Конструктор потомка то ещё не отработал.</div></div>Но отработал конструктор конструируемого класса. И пусть делегируемый, а делегирующий ещё нет, деструктор-то вызовется, ежели чё.<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389186'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T14:54:39+00:00">19.12.13, 14:54</time></span><div class='quote '>Замени на метод.</div></div>Не уловил сути задачи. Что мешает написать просто <strong class='tag-b'>test(int&amp; i) : i(i) {};</strong>? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-20T14:09:32+00:00">20.12.13, 14:09</time></span></span><br>
Чёрт... Парни, подскажите, где лучше всего создать тему по мультиметодам. В январе пойду в отпуск на пару недель, надо взять себя в руки и-таки опубликовать. Лучше всего подходят &quot;Наши проекты&quot;, но я там редкий гость. Плюсовый раздел подходит для обсуждения, но не публикации.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389255</guid>
        <pubDate>Thu, 19 Dec 2013 17:10:45 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389255</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389250'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T16:58:36+00:00">19.12.13, 16:58</time></span><div class='quote '>Отнюдь.</div></div><br>
Ну, тогда измените мой пример.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389250'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T16:58:36+00:00">19.12.13, 16:58</time></span><div class='quote '>Т.е. таки сахар</div></div><br>
Я же сказал - надо подумать.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389250'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T16:58:36+00:00">19.12.13, 16:58</time></span><div class='quote '>Не новая, улучшенная старая</div></div><br>
Т.е. вы таки покажете код, который гарантированно на любом компиляторе покажет мне требуемую диагностику?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389250'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T16:58:36+00:00">19.12.13, 16:58</time></span><div class='quote '>Это прекрасно делалось мааааленькой модификацией семантики throw-спецификаторов.</div></div><br>
Т.е. не сахар.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389250'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T16:58:36+00:00">19.12.13, 16:58</time></span><div class='quote '>Вот и я об этом. Коли исключение произошло, его требуется донести. Зачем к ему ещё одно новое? Только ради замены. Тогда зачем доносить исходное, если архитектурно оно должно быть заменено?<br>
В общем, я не вижу места этой фиче в продакшне. Но я оговорился, что тут могу ошибаться.</div></div><br>
Оставив в стороне необходимость фичи, я не понимаю, каким образом она является <em class='tag-i'>синтаксическим</em> сахаром? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-19T17:11:46+00:00">19.12.13, 17:11</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389250'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T16:58:36+00:00">19.12.13, 16:58</time></span><div class='quote '> После отработки делегируемого объект-то уже будет иметь свой собственный динамический тип, ведь так?</div></div><br>
С чего бы? Конструктор потомка то ещё не отработал.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389250</guid>
        <pubDate>Thu, 19 Dec 2013 16:58:36 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389250</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:59:58+00:00">19.12.13, 13:59</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>делегирующий конструктор - метод</div></div><br>
Метод требует, чтобы все поля класса были сконструированы, делегирующий конструктор - нет.</div></div>Отнюдь. Метод не обязан полагаться на контракты. Да, это плохо, но в каждом классе есть хотя бы один такой, собственно конструктор (иногда неявный), так что считать ли некий метод (не конструктор) специальным, личное дело прогаммера. Впрочем, на эту тему я писал не раз, не буду повторяться. Там один итог в итоге: такие методы должны быть приватные. Собственно делегируемые конструкторы по ряду причин тоже.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:59:58+00:00">19.12.13, 13:59</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>пользовательские литералы- #defines</div></div><br>
Я подумаю... Не очень хорошо знаю пользовательские литералы. Но как минимум - засорение глобального пространства имён.</div></div>Т.е. таки сахар. Вместо макросов подойдут и inline. Даже constexpr, если есть возможность.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:59:58+00:00">19.12.13, 13:59</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>override - улучшенная диагностика многих компиляторов</div></div><br>
Полагаться на это можно, но потребовать её какими бы то ни было методами вы не можете. Следовательно, это новая функциональность, а не сокращённая запись старой.</div></div>Не новая, улучшенная старая, которую многие компиляторы и так предоставляли, так что теперь она стандартизирована.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:59:58+00:00">19.12.13, 13:59</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>noexcept - throw();</div></div><br>
Нет. Я могу написать<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">template&#60;class T&#62;</div><div class="code_line">void foo(T t) noexcept(noexcept(T(t)) { /*...*/ }</div></ol></div></div></div></div><br>
И вообще, noexept(expression) - это константное выражение, которое я могу использовать, например, при выборе специализации шаблона.</div></div>Это прекрасно делалось мааааленькой модификацией семантики throw-спецификаторов.<br>
Но тут надо отметить, что throw()-спецификаторы себя не оправдали. Так что на лицо не столько сахар, сколько мотивация к отказу от старой семантики.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:59:58+00:00">19.12.13, 13:59</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>std::nested_exception - не заменяется, но непонятно, а занафик нужно, окромя редчайших моментов отладки</div></div><br>
Нужно, чтобы донести до обработчика первичное исключение, если оно пролетает через несколько слоёв архитектуры, и залогировать его, чтобы знать первопричину.</div></div>Вот и я об этом. Коли исключение произошло, его требуется донести. Зачем к чему тогда ещё одно новое? Только ради замены. Тогда зачем доносить исходное, если архитектурно оно должно быть заменено?<br>
В общем, я не вижу места этой фиче в продакшне. Но я оговорился, что тут могу ошибаться. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-19T17:02:49+00:00">19.12.13, 17:02</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389183'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T14:49:22+00:00">19.12.13, 14:49</time></span><div class='quote '>Так ведь чисто синтаксически. Объект-то полностью проинициализирован будет после его вызова.</div></div>Ум-м-м... до меня только что дошло. После отработки делегируемого объект-то уже будет иметь свой собственный динамический тип, ведь так? Так что не виртуальные конструкторы, &quot;о котором так много говорили ©&quot; дельфисты, но-таки полноформатный полиморфизм в делегирующем конструкторе мы вполне получаем. Однако, во-первых, нет симметрии с деструкторами, во-вторых, ... ну были ж фабрики.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389186</guid>
        <pubDate>Thu, 19 Dec 2013 14:54:39 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389186</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389183'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T14:49:22+00:00">19.12.13, 14:49</time></span><div class='quote '>Так ведь чисто синтаксически. Объект-то полностью проинициализирован будет после его вызова.</div></div><br>
Так в том то и дело, что <em class='tag-i'>после</em>. Потому и нельзя заменить на метод, т.к. тогда у нас объект частично должен быть сконструирован <em class='tag-i'>до</em> вызова. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-19T15:05:53+00:00">19.12.13, 15:05</time></span></span><br>
<strong class='tag-b'>D_KEY</strong>, вот код<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">struct test</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int&amp; i;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string s;</div><div class="code_line">&nbsp;&nbsp; &nbsp;test(int&amp; i) : test(i, std::string()) {}</div><div class="code_line">&nbsp;&nbsp; &nbsp;test(int&amp; i, std::string s) : i(i), s(std::move(s)) {}</div><div class="code_line">};</div></ol></div></div></div></div><br>
Замени на метод.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389183</guid>
        <pubDate>Thu, 19 Dec 2013 14:49:22 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389183</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389177'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T14:40:32+00:00">19.12.13, 14:40</time></span><div class='quote '>делегирующий же конструктор именно частью списка инициализации и является.</div></div><br>
Так ведь чисто синтаксически. Объект-то полностью проинициализирован будет после его вызова.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389177</guid>
        <pubDate>Thu, 19 Dec 2013 14:40:32 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389177</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389176'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T14:39:05+00:00">19.12.13, 14:39</time></span><div class='quote '>После отработки вызываемого конструктора у тебя будет готовый объект со всеми инициализированными полями. Или я ошибаюсь и тут?</div></div><br>
Нет, не ошибаешься. Я о том, что ты не можешь вызвать метод, пока не отработал список инициализации, делегирующий же конструктор именно частью списка инициализации и является. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-19T14:41:12+00:00">19.12.13, 14:41</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389167'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T14:32:35+00:00">19.12.13, 14:32</time></span><div class='quote '>Виртуальные методы вводят новую концепцию динамической диспетчеризации метода по типу объекта.</div></div><br>
Что на практике всего лишь указатели на функции - можно сделать руками.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389176</guid>
        <pubDate>Thu, 19 Dec 2013 14:39:05 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389176</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389109'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:59:58+00:00">19.12.13, 13:59</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>делегирующий конструктор - метод</div></div><br>
Метод требует, чтобы все поля класса были сконструированы, делегирующий конструктор - нет.</div></div><br>
После отработки вызываемого конструктора у тебя будет готовый объект со всеми инициализированными полями. Или я ошибаюсь и тут?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389169</guid>
        <pubDate>Thu, 19 Dec 2013 14:33:09 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389169</link>
        <description><![CDATA[Romkin: Все можно назвать синтаксическим сахаром, кроме ассемблера. Да и там он есть.]]></description>
        <author>Romkin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389167</guid>
        <pubDate>Thu, 19 Dec 2013 14:32:35 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389167</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389062'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:18:56+00:00">19.12.13, 13:18</time></span><div class='quote '>Ну, там же ещё автоматом за локальными переменными хранится, что тоже придётся делать руками</div></div><br>
Да, но вот считать ли это новой семантикой?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Ну, виртуальные методы - это сахар или нет?</div></div><br>
Виртуальные методы вводят новую концепцию динамической диспетчеризации метода по типу объекта. Т.е. семантически новый вид методов. В случае await мы просто получаем ..эм.. автоматический генератор правильного для нашего случая std::future. Или мы получаем что-то еще?<br>
<br>
Впрочем, какой-то мутный разговор получается :D]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389153</guid>
        <pubDate>Thu, 19 Dec 2013 14:23:11 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389153</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389151'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Flex Ferrum &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T14:21:46+00:00">19.12.13, 14:21</time></span><div class='quote '>В том то и дело, что нет.  Приходится извращаться.</div></div><br>
Тогда почему <strong class='tag-b'>Qraizer</strong> не прав в этом пункте?]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389151</guid>
        <pubDate>Thu, 19 Dec 2013 14:21:46 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389151</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389149'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T14:21:04+00:00">19.12.13, 14:21</time></span><div class='quote '>А оно чем-то заменяется?</div></div><br>
В том то и дело, что нет. :) Приходится извращаться.]]></description>
        <author>Flex Ferrum</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389149</guid>
        <pubDate>Thu, 19 Dec 2013 14:21:04 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389149</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389129'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Flex Ferrum &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T14:11:28+00:00">19.12.13, 14:11</time></span><div class='quote '>Вот здесь</div></div><br>
А оно чем-то заменяется?]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389129</guid>
        <pubDate>Thu, 19 Dec 2013 14:11:28 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389129</link>
        <description><![CDATA[Flex Ferrum: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>Я где-то неправ?</div></div><br>
Вот здесь:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>std::nested_exception - не заменяется, но непонятно, а занафик нужно, окромя редчайших моментов отладки.</div></div><br>
:)]]></description>
        <author>Flex Ferrum</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389109</guid>
        <pubDate>Thu, 19 Dec 2013 13:59:58 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389109</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>делегирующий конструктор - метод</div></div><br>
Метод требует, чтобы все поля класса были сконструированы, делегирующий конструктор - нет.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>пользовательские литералы- #defines</div></div><br>
Я подумаю... Не очень хорошо знаю пользовательские литералы. Но как минимум - засорение глобального пространства имён.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>override - улучшенная диагностика многих компиляторов</div></div><br>
Полагаться на это можно, но потребовать её какими бы то ни было методами вы не можете. Следовательно, это новая функциональность, а не сокращённая запись старой.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>noexcept - throw();</div></div><br>
Нет. Я могу написать<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">template&#60;class T&#62;</div><div class="code_line">void foo(T t) noexcept(noexcept(T(t)) { /*...*/ }</div></ol></div></div></div></div><br>
И вообще, noexept(expression) - это константное выражение, которое я могу использовать, например, при выборе специализации шаблона.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>std::nested_exception - не заменяется, но непонятно, а занафик нужно, окромя редчайших моментов отладки</div></div><br>
Нужно, чтобы донести до обработчика первичное исключение, если оно пролетает через несколько слоёв архитектуры, и залогировать его, чтобы знать первопричину.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389089'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T13:48:26+00:00">19.12.13, 13:48</time></span><div class='quote '>Я где-то неправ?</div></div><br>
Мне кажется, что по всем пунктам.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389089</guid>
        <pubDate>Thu, 19 Dec 2013 13:48:26 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389089</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388704'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T20:33:35+00:00">18.12.13, 20:33</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388672'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T19:54:19+00:00">18.12.13, 19:54</time></span><div class='quote '>Делегирующие конструкторы, пользовательские литералы, override, &lt;cstdint&gt;, noexcept, может быть даже std::nested_exception. Не полный список. Это всё сахар,</div></div><br>
Можете звать это сахаром, но это не <em class='tag-i'>синтаксический сахар</em> просто по его определею - всё это новые возможности, которых раньше не было, особенно noexcept.</div></div><ul class="tag-list"><li>делегирующий конструктор - метод;</li><li>пользовательские литералы- #defines;</li><li>override                 - улучшенная диагностика многих компиляторов;</li><li>noexcept                 - throw();</li><li>std::nested_exception    - не заменяется, но непонятно, а занафик нужно, окромя редчайших моментов отладки.</li></ul>Я где-то неправ?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389062</guid>
        <pubDate>Thu, 19 Dec 2013 13:18:56 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389062</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389014'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T12:19:40+00:00">19.12.13, 12:19</time></span><div class='quote '>Думаю, что да. По крайней мере каждое конкретное применение await можно сделать руками.</div></div><br>
Ну, там же ещё автоматом за локальными переменными хранится, что тоже придётся делать руками, если попытаться воспроизвести такую stackless coroutine. Это всё же разная семантика.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3389014'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T12:19:40+00:00">19.12.13, 12:19</time></span><div class='quote '>Я ошибаюсь?</div></div><br>
Ну, виртуальные методы - это сахар или нет? Руками сделать можно. Степень поддержки со стороны компилятора будет такой же, как и для async.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389014</guid>
        <pubDate>Thu, 19 Dec 2013 12:19:40 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389014</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388932'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T10:18:30+00:00">19.12.13, 10:18</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388860'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T08:10:31+00:00">19.12.13, 08:10</time></span><div class='quote '>Эм, а что же это?</div></div><br>
Т.е. ты без async можешь сделать всё то же самое?</div></div><br>
Думаю, что да. По крайней мере каждое конкретное применение await можно сделать руками. Но подробно не смотрел на это дело. Я ошибаюсь?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389003</guid>
        <pubDate>Thu, 19 Dec 2013 12:04:32 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3389003</link>
        <description><![CDATA[Romkin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388968'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>treeS &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T11:18:58+00:00">19.12.13, 11:18</time></span><div class='quote '>Средствами shell в делфи есть спецальный компонент.</div></div><br>
Загрузился. Облазил палитру. Поискал в исходниках. Для разнообразия в 2010. Где оно есть?]]></description>
        <author>Romkin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388968</guid>
        <pubDate>Thu, 19 Dec 2013 11:18:58 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388968</link>
        <description><![CDATA[treeS: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388925'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T10:11:43+00:00">19.12.13, 10:11</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388917'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Romkin &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T09:55:26+00:00">19.12.13, 09:55</time></span><div class='quote '>Сдается мне, что-то тут перепутано с точностью до наоборот.</div></div><br>
Кстати да, скорей всего. Как удалить в корзину надо будет гуглить :)</div></div><br>
Средствами shell в делфи есть спецальный компонент. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-19T11:19:41+00:00">19.12.13, 11:19</time></span></span><br>
И поверте. Ничего не перепутанно]]></description>
        <author>treeS</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388932</guid>
        <pubDate>Thu, 19 Dec 2013 10:18:30 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388932</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388860'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T08:10:31+00:00">19.12.13, 08:10</time></span><div class='quote '>Эм, а что же это?</div></div><br>
Т.е. ты без async можешь сделать всё то же самое?]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388925</guid>
        <pubDate>Thu, 19 Dec 2013 10:11:43 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388925</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388917'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Romkin &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T09:55:26+00:00">19.12.13, 09:55</time></span><div class='quote '>Сдается мне, что-то тут перепутано с точностью до наоборот.</div></div><br>
Кстати да, скорей всего. Как удалить в корзину надо будет гуглить :)]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388917</guid>
        <pubDate>Thu, 19 Dec 2013 09:55:26 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388917</link>
        <description><![CDATA[Romkin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388898'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>treeS &#064; <time class="tag-quote__quoted-time" datetime="2013-12-19T09:14:27+00:00">19.12.13, 09:14</time></span><div class='quote '>Но средствами делфи происходит перемещения в корзину, целый день он с этим мучался, и на следующий день, он узнал о Win API функции DeleteFile</div></div><br>
Фигасе &quot;средства Delphi&quot;. В корзину - это функцию оболочки пользовать надо. А DeleteFile является исторически оберткой в SysUtils, подается строка туда.<br>
Сдается мне, что-то тут перепутано с точностью до наоборот. Мне вот вроде вспоминается что я искал как удалить файл в корзину когда-то.]]></description>
        <author>Romkin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388912</guid>
        <pubDate>Thu, 19 Dec 2013 09:46:58 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388912</link>
        <description><![CDATA[OpenGL: Значит это хреновый программист. Я наверняка уже через полгода программирования на дельфе (когда писал всякую хрень для себя в школе) знал, как оно делается  :D]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388898</guid>
        <pubDate>Thu, 19 Dec 2013 09:14:27 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388898</link>
        <description><![CDATA[treeS: О&#33;&#33;&#33; в тему.<br>Недавно у нашего делфи программиста с десятилетним стажем появилась серьезная проблема которую он решал 2 дня, задача была удалить файл. Но средствами делфи происходит перемещения в корзину, целый день он с этим мучался, и на следующий день, он узнал о Win API функции DeleteFile и у него ушло 6 часов что бы он понял как засунуть в нее указатель на строку))) И он решил эту проблему&#33;&#33;&#33; С гордостью потом всем рассказывал&#33;]]></description>
        <author>treeS</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388860</guid>
        <pubDate>Thu, 19 Dec 2013 08:10:31 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388860</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388637'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T17:50:59+00:00">18.12.13, 17:50</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388606'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T16:02:50+00:00">18.12.13, 16:02</time></span><div class='quote '>MyNameIsIgor, а если таки добавят твой &quot;любимый&quot; async? </div></div><br>
Я не буду его юзать. Но async - не сахар.</div></div><br>
Эм, а что же это? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-19T08:25:27+00:00">19.12.13, 08:25</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388668'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T19:49:22+00:00">18.12.13, 19:49</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388606'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T16:02:50+00:00">18.12.13, 16:02</time></span><div class='quote '>Чтобы не переписывать проекты</div></div><br>
Зачем переписывать? F# доступен давно, надо было сразу на нем писать то что удобней.</div></div><br>
Нельзя просто так взять и начать писать на F# ;)<br>
<br>
Надо было... Кому надо было и зачем?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388704</guid>
        <pubDate>Wed, 18 Dec 2013 20:33:35 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388704</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388672'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T19:54:19+00:00">18.12.13, 19:54</time></span><div class='quote '>Делегирующие конструкторы, пользовательские литералы, override, &lt;cstdint&gt;, noexcept, может быть даже std::nested_exception. Не полный список. Это всё сахар,</div></div><br>
Можете звать это сахаром, но это не <em class='tag-i'>синтаксический сахар</em> просто по его определею - всё это новые возможности, которых раньше не было, особенно noexcept.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388672</guid>
        <pubDate>Wed, 18 Dec 2013 19:54:19 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388672</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388600'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T15:37:59+00:00">18.12.13, 15:37</time></span><div class='quote '>Цикл по коллекциям и auto? Всего то</div></div>Не только. Делегирующие конструкторы, пользовательские литералы, override, &lt;cstdint&gt;, noexcept, может быть даже std::nested_exception. Не полный список. Это всё сахар, который удобен, и я не вижу других причин его стандартизации. Вот многопоточность, атомарные операции, семантика перемещения, decltype, лямбды, новые символьные типы, контейнеры, регэкспы итп - это не сахар, и такого больше. И это хорошо.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388668</guid>
        <pubDate>Wed, 18 Dec 2013 19:49:22 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388668</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388606'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T16:02:50+00:00">18.12.13, 16:02</time></span><div class='quote '>Чтобы не переписывать проекты</div></div><br>
Зачем переписывать? F# доступен давно, надо было сразу на нем писать то что удобней.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388637</guid>
        <pubDate>Wed, 18 Dec 2013 17:50:59 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388637</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388606'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T16:02:50+00:00">18.12.13, 16:02</time></span><div class='quote '>MyNameIsIgor, а если таки добавят твой &quot;любимый&quot; async? </div></div><br>
Я не буду его юзать. Но async - не сахар.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388614</guid>
        <pubDate>Wed, 18 Dec 2013 16:15:48 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388614</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388605'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T16:00:01+00:00">18.12.13, 16:00</time></span><div class='quote '>Зачем это что-то вводить, если уже есть F# например? </div></div><br>
Ну на счет F# я ничего не скажу, слышал о таком, но не щупал. Там в коментах вроде как плачут что у них там констант нет толковых, а тут аж такие изменения. Я просто диву даюсь, люди так рады что им придется писать на 2 строчки меньше кода, это при том что он станет менее понятным. Неужели им так тяжело было придумать имена для параметров конструктора отличные от имен мемберов, ну или на крайний случай инициализировать еретиковым способом через this, как они все любят это делать? <br>
Или вот новшество:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
<strong class='tag-b'>Использование статических классов в директиве using</strong><br>
<br>
При использовании директивы using теперь можно будет указывать не только пространства имён, но и статические классы, <span class="tag-color tag-color-named" data-value="blue" style="color: blue">для обеспечения возможности использования методов класса без указания его имени.</span><br>
</div></div><br>
Их там что ООП уже задолбало, решили в процедурном стиле пописать?  :D  Какой смысл этого? Там же в среде и так все вылетает автоматом и за тебя код сам пишется. Неужто первые три буквы класса и ентер набрать лень? :D]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388606</guid>
        <pubDate>Wed, 18 Dec 2013 16:02:50 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388606</link>
        <description><![CDATA[D_KEY: <strong class='tag-b'>MyNameIsIgor</strong>, а если таки добавят твой &quot;любимый&quot; async? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-18T16:03:35+00:00">18.12.13, 16:03</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388605'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T16:00:01+00:00">18.12.13, 16:00</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388539'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T13:00:36+00:00">18.12.13, 13:00</time></span><div class='quote '>Я спрашиваю им что уже больше нечего вводить кроме как вот этого голого синтаксического сахара?</div></div><br>
Зачем это что-то вводить, если уже есть F# например?</div></div><br>
Чтобы не переписывать проекты :)]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388605</guid>
        <pubDate>Wed, 18 Dec 2013 16:00:01 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388605</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388539'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T13:00:36+00:00">18.12.13, 13:00</time></span><div class='quote '>Я спрашиваю им что уже больше нечего вводить кроме как вот этого голого синтаксического сахара?</div></div><br>
Зачем это что-то вводить, если уже есть F# например?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388600</guid>
        <pubDate>Wed, 18 Dec 2013 15:37:59 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388600</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388598'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T15:34:28+00:00">18.12.13, 15:34</time></span><div class='quote '>Справедливости ради следует отметить и сахар в новом Стандарте Плюсов</div></div><br>
Цикл по коллекциям и auto? Всего то :)]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388598</guid>
        <pubDate>Wed, 18 Dec 2013 15:34:28 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388598</link>
        <description><![CDATA[Qraizer: Справедливости ради следует отметить и сахар в новом Стандарте Плюсов. Но ведь помимо сахара там и мяса дофига.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388566</guid>
        <pubDate>Wed, 18 Dec 2013 13:59:36 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388566</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388558'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>IL_Agent &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T13:48:47+00:00">18.12.13, 13:48</time></span><div class='quote '>Без ?. приходится извращаться с if&#39;ами или монадными велосипедами вроде .With</div></div><br>
И в чем извращение состоит? Проверить явно объет на Null перед его использованием - это проблема? :huh: <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388558'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>IL_Agent &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T13:48:47+00:00">18.12.13, 13:48</time></span><div class='quote '>Без возможности объявления переменных при передаче как out их приходится объявлять отдельно - лишняя строка неизбежна.</div></div><br>
Огоспади&#33;&#33;&#33; Лишняя строка&#33;&#33;&#33; У вас что там на строках экономить принято? :D <br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388558'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>IL_Agent &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T13:48:47+00:00">18.12.13, 13:48</time></span><div class='quote '>Без вывода типа в конструкторе дженерика приходится городить фабрику.</div></div><br>
Так у вас же там встроеные фабрики искоропки, разве нет?<br>
<br>
А по поводу остального? Остальное я так полагаю, даже тебе не интересно?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388558'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>IL_Agent &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T13:48:47+00:00">18.12.13, 13:48</time></span><div class='quote '>Wound, ты сам не знаешь чего хочешь. </div></div><br>
Да я понять хотел, чего синтаксический сахар представляют как будущее C#.  :-?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388558</guid>
        <pubDate>Wed, 18 Dec 2013 13:48:47 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388558</link>
        <description><![CDATA[IL_Agent: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388533'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T12:47:27+00:00">18.12.13, 12:47</time></span><div class='quote '>Например какую то действительно важную вещь, без которой жить там плохо, и приходится извращаться.</div></div><br>
Без ?. приходится извращаться с if&#39;ами или монадными велосипедами вроде .With<br>
Без возможности объявления переменных при передаче как out их приходится объявлять отдельно - лишняя строка неизбежна.<br>
Без вывода типа в конструкторе дженерика приходится городить фабрику.<br>
<br>
<strong class='tag-b'>Wound</strong>, ты сам не знаешь чего хочешь.]]></description>
        <author>IL_Agent</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388539</guid>
        <pubDate>Wed, 18 Dec 2013 13:00:36 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388539</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388535'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T12:53:34+00:00">18.12.13, 12:53</time></span><div class='quote '>Так я и прошу пример такой важной вещи. Что тебе не хватает?</div></div><br>
Да вы меня может быть не так поняли? Я не говорю что они не ввели чего то, что я ждал, а ввели вот эту косметику. Я спрашиваю им что уже больше нечего вводить кроме как вот этого голого синтаксического сахара? И даже если так, то какой смысл в этом нововведении? Судя по тому как было, и как будет, я не вижу особой принципиальной разницы. Какой смысл тогда тянуть это в язык?<br>
Я просто вот решил на C# попробовать перевестись в проект, но такие нововедения меня както смущают, такое ощущение что навязывают людям какую то свою систему, максимум лени, или както так. <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-12-18T13:02:05+00:00">18.12.13, 13:02</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388535'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T12:53:34+00:00">18.12.13, 12:53</time></span><div class='quote '>Так это изначально их путь. </div></div><br>
Голый синтаксический сахар? Да вроде сколько источников видел, нигде про такое не слышал. :-?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388535</guid>
        <pubDate>Wed, 18 Dec 2013 12:53:34 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388535</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388533'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T12:47:27+00:00">18.12.13, 12:47</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388526'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T12:40:53+00:00">18.12.13, 12:40</time></span><div class='quote '>Например? </div></div><br>
Например какую то действительно важную вещь, без которой жить там плохо, и приходится извращаться.</div></div><br>
Так я и прошу пример такой важной вещи. Что тебе не хватает?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>А тут голый синтаксический сахар</div></div><br>
Так это изначально их путь.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388533</guid>
        <pubDate>Wed, 18 Dec 2013 12:47:27 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388533</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388526'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T12:40:53+00:00">18.12.13, 12:40</time></span><div class='quote '>Например? </div></div><br>
Например какую то действительно важную вещь, без которой жить там плохо, и приходится извращаться.<br>
А тут голый синтаксический сахар, который и юзать то стремно както. <br>
<br>
Ну просто почитай статью, потом почитай хотя бы первые 10 коментов, такое ощущение что пихают туда всякое, а народ то как рад, первая необходимость прям, как они без этого жили? :D Я просто не пойму в чем смысл этого? Ввести в язык все мыслимые и не мыслимые конструкции на любой вкус?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388526</guid>
        <pubDate>Wed, 18 Dec 2013 12:40:53 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388526</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388496'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T12:03:32+00:00">18.12.13, 12:03</time></span><div class='quote '>Я бы хотел увидеть какие то действительно полезности</div></div><br>
Например?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388513</guid>
        <pubDate>Wed, 18 Dec 2013 12:17:27 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388513</link>
        <description><![CDATA[IL_Agent: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388496'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T12:03:32+00:00">18.12.13, 12:03</time></span><div class='quote '>Я бы хотел увидеть какие то действительно полезности, а не какие то ненужные вещи</div></div><br>
Имхо ?. и объявление переменных в out - вполне полезный сахарок. Вывод типов в конструкторе - тоже нужно.]]></description>
        <author>IL_Agent</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388496</guid>
        <pubDate>Wed, 18 Dec 2013 12:03:32 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388496</link>
        <description><![CDATA[Wound: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388413'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>IL_Agent &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T10:49:59+00:00">18.12.13, 10:49</time></span><div class='quote '>А ты чего бы хотел увидеть ?<br>
</div></div><br>
Я бы хотел увидеть какие то действительно полезности, а не какие то ненужные вещи, которые и так делаются без особых проблем.<br>
Ну вот взять хотя бы эти конструкторы, C# программисты не могут придумать имена переменным? Или какой смысл у первичных конструкторов? Остальное тоже, както больше смахивает на никому не нужную косметику. Зачем ее туда столько пихать? Только чтобы было?]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388423</guid>
        <pubDate>Wed, 18 Dec 2013 10:56:47 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388423</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388406'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T10:45:56+00:00">18.12.13, 10:45</time></span><div class='quote '>Какое то будущее у C# унылое совсем, если это самые смаки из того что будет</div></div><br>
Они следуют своему кредо :)<br>
<img class='tag-img' src='http://habrastorage.org/storage/1b0e7dd5/1af6981a/b8cab28e/4df99504.jpeg' alt='user posted image'><br>
Сахарозы уже столько, что всю её выучить уже не менее сложно, чем постичь все тонкости C++.]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388413</guid>
        <pubDate>Wed, 18 Dec 2013 10:49:59 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388413</link>
        <description><![CDATA[IL_Agent: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3388406'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Wound &#064; <time class="tag-quote__quoted-time" datetime="2013-12-18T10:45:56+00:00">18.12.13, 10:45</time></span><div class='quote '>Какое то будущее у C# унылое совсем, если это самые смаки из того что будет</div></div><br>
А ты чего бы хотел увидеть ?]]></description>
        <author>IL_Agent</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388406</guid>
        <pubDate>Wed, 18 Dec 2013 10:45:56 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3388406</link>
        <description><![CDATA[Wound: Какое то будущее у C# унылое совсем, если это самые смаки из того что будет -&gt; <a class='tag-url' href='http://habrahabr.ru/post/206356/' target='_blank'>Будущее  С#</a><br>
 :ph34r:]]></description>
        <author>Wound</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3278733</guid>
        <pubDate>Sat, 23 Feb 2013 23:17:18 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3278733</link>
        <description><![CDATA[jack128: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3278585'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Keepun &#064; <time class="tag-quote__quoted-time" datetime="2013-02-23T15:35:47+00:00">23.02.13, 15:35</time></span><div class='quote '>А надо?</div></div><br>
ради лямбд конечно не надо. А вот например ПМ - это да.]]></description>
        <author>jack128</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3278608</guid>
        <pubDate>Sat, 23 Feb 2013 16:34:05 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3278608</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3278585'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Keepun &#064; <time class="tag-quote__quoted-time" datetime="2013-02-23T15:35:47+00:00">23.02.13, 15:35</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3276501'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-02-18T21:36:03+00:00">18.02.13, 21:36</time></span><div class='quote '>А на Scala с F# совсем не смотришь? </div></div><br>
<a class='tag-url' href='http://habrahabr.ru/post/168425/#comment_5828777' target='_blank'>А надо?</a></div></div><br>
Я бы советовал.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3278596</guid>
        <pubDate>Sat, 23 Feb 2013 16:04:31 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3278596</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3278585'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Keepun &#064; <time class="tag-quote__quoted-time" datetime="2013-02-23T15:35:47+00:00">23.02.13, 15:35</time></span><div class='quote '><a class='tag-url' href='http://habrahabr.ru/post/168425/#comment_5828777' target='_blank'>А надо?</a></div></div><br>
Конечно.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3278585</guid>
        <pubDate>Sat, 23 Feb 2013 15:35:47 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3278585</link>
        <description><![CDATA[Keepun: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3276501'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-02-18T21:36:03+00:00">18.02.13, 21:36</time></span><div class='quote '>А на Scala с F# совсем не смотришь? </div></div><br>
<a class='tag-url' href='http://habrahabr.ru/post/168425/#comment_5828777' target='_blank'>А надо?</a>]]></description>
        <author>Keepun</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276612</guid>
        <pubDate>Tue, 19 Feb 2013 07:49:53 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276612</link>
        <description><![CDATA[--Ins--: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3276501'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-02-18T21:36:03+00:00">18.02.13, 21:36</time></span><div class='quote '>А на Scala с F# совсем не смотришь?</div></div><br>
<br>
Никак. По мере надобности можно и посмотреть будет]]></description>
        <author>--Ins--</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276501</guid>
        <pubDate>Mon, 18 Feb 2013 21:36:03 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276501</link>
        <description><![CDATA[D_KEY: А на Scala с F# совсем не смотришь?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276486</guid>
        <pubDate>Mon, 18 Feb 2013 20:04:01 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276486</link>
        <description><![CDATA[--Ins--: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3276444'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2013-02-18T18:23:43+00:00">18.02.13, 18:23</time></span><div class='quote '>Ты на что, кстати, больше смотришь? На шарп или яву?</div></div><br>
<br>
Примерно одинаково]]></description>
        <author>--Ins--</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276444</guid>
        <pubDate>Mon, 18 Feb 2013 18:23:43 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276444</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3276423'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>&#045;&#045;Ins&#045;&#045; &#064; <time class="tag-quote__quoted-time" datetime="2013-02-18T17:45:52+00:00">18.02.13, 17:45</time></span><div class='quote '>в том же шарпе</div></div><br>
Ты на что, кстати, больше смотришь? На шарп или яву?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276423</guid>
        <pubDate>Mon, 18 Feb 2013 17:45:52 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276423</link>
        <description><![CDATA[--Ins--: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3276420'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>leo &#064; <time class="tag-quote__quoted-time" datetime="2013-02-18T17:28:29+00:00">18.02.13, 17:28</time></span><div class='quote '>Да, но как ни крути, а это особый режим функционирования объекта в котором некоторые вещи выполняются не так, как в обычном real-time&#39;е. Поэтому при написании собственных компонентов для &quot;формошлепства&quot; это также нужно учитывать, чтобы не пенять потом на &quot;злого дядю&quot; и &quot;дурную модель ООП&quot;</div></div><br>
<br>
Кстати, лично мне это решение не очень нравиться с csDesigning. Код, которые может быть выполнен только в редакторе, оказывается в скомпилированном приложении. Мелочь конечно как правило, но в том же шарпе этого избежали]]></description>
        <author>--Ins--</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276420</guid>
        <pubDate>Mon, 18 Feb 2013 17:28:29 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276420</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3276137'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>trainer &#064; <time class="tag-quote__quoted-time" datetime="2013-02-18T10:20:21+00:00">18.02.13, 10:20</time></span><div class='quote '>csDesigning, если я правильно помню, нужен только для обеспечения design-time функционала - визуализации в редакторе форм</div></div><br>
Да, но как ни крути, а это особый режим функционирования объекта в котором некоторые вещи выполняются не так, как в обычном real-time&#39;е. Поэтому при написании собственных компонентов для &quot;формошлепства&quot; это также нужно учитывать, чтобы не пенять потом на &quot;злого дядю&quot; и &quot;дурную модель ООП&quot; :)]]></description>
        <author>leo</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276151</guid>
        <pubDate>Mon, 18 Feb 2013 10:48:51 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276151</link>
        <description><![CDATA[KILLER: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274771'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T21:54:42+00:00">14.02.13, 21:54</time></span><div class='quote '><div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>А зачем их занулять?</div></div><br>
<br>
в целях безопасности<br>
вот придёт к тебе злой хакер, подключится к компу по FireWire, и сольёт дамп всей физ. памяти к себе на диск :) </div></div><br>
А как тебе зануление поможет? Ты ведь зануляешь не кусок памяти, а тупо переменной-указателю присваиваешь 0. Кусок памяти так и останется с инфой, пока его не перетерет что то другое. И злой хакер получит инфу. Чтоб не получил, нужно наверное вызывать какой нибудь memset указывая размер заполняемой нулями памяти еще до попытки освобождения памяти и вызова деструкторов, а не после. После - это уже не твоя память.<br>
Так зачем занулять то? :unsure: <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-02-18T10:59:30+00:00">18.02.13, 10:59</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274771'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T21:54:42+00:00">14.02.13, 21:54</time></span><div class='quote '>и почему затычка? ты удаление объекта, например, тоже рассматриваешь как затычку к утечке ресурсов?</div></div><br>
Так ты удаляешь руками тогда, когда выделяешь руками. А не тупо всегда. В остальных случаях, ты не удаляешь руками. Что тут нелогично и рассматривать как затычку?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274774'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T23:12:11+00:00">14.02.13, 23:12</time></span><div class='quote '>появился вирт метод -&gt; поправили деструктор</div></div><br>
Так это и есть костыль. Тебе постоянно нужно помнить, что если появился вирт. метод -&gt; поправили деструктор. Иначе fail...<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274774'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T23:12:11+00:00">14.02.13, 23:12</time></span><div class='quote '>речь шла о указателе на область памяти, а не о объектах<br>
и зануление памяти, а не указателя на неё</div></div><br>
А как ты занулишь память после того как она уже не твоя? Что то ты не договариваешь. Память можно занулить только до того как ее осободили, в противном случае это уже будет грязным хаком. А вот указатель вполне себе можно занулить и после удаления. Так о чем речь там шла? Или может в делфи после освобождения объекта и вызова деструкторов, та память которой он владел еще не помечена как свободная и все еще принадлежит этому, уже удаленому объекту? :wacko:]]></description>
        <author>KILLER</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276137</guid>
        <pubDate>Mon, 18 Feb 2013 10:20:21 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3276137</link>
        <description><![CDATA[trainer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3275814'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>leo &#064; <time class="tag-quote__quoted-time" datetime="2013-02-17T12:24:32+00:00">17.02.13, 12:24</time></span><div class='quote '>по крайней мере проверка особого состояния визуального проектирования csDesigning встречается о-очень часто</div></div>csDesigning, если я правильно помню, нужен только для обеспечения design-time функционала - визуализации в редакторе форм.]]></description>
        <author>trainer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3275814</guid>
        <pubDate>Sun, 17 Feb 2013 12:24:32 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3275814</link>
        <description><![CDATA[leo: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274761'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T20:41:20+00:00">14.02.13, 20:41</time></span><div class='quote '>Так что там у вас с Clear из деструкторов? </div></div><br>
Если в общем, то, видимо, &quot;мат в 3 хода&quot; ;) <br>
А если по Алёхински развернуть шахматную доску и посмотреть на ситуацию глазами &quot;противника&quot;? Я лично считаю, что внутренняя кухня дельфийской объектной модели заточена конкретно (можно сказать исключительно) под VCL и ее расширения (и в качестве отдельного штриха - на поддержку интерфейсов), а возможность использования этой модели для других, общих задач - это типа бонуса, побочного продукта VCL-технологии. Этим по идее можно объяснить и косяк с вызовом TList.Clear из деструктора - ребята создавали иерархию TList под свои внутренние нужды и не думали, что кому-то придет в голову использовать TList для чего-то более сложного. В самой же VCL ес-но все продумано и &quot;схвачено&quot;, и те же базовые классы TComponent и TControl имеют собственные &quot;инварианты&quot; состояния типа ComponentState и ControlState, предусматривающие в т.ч. и различные промежуточные &quot;недоделанные&quot; состояния (csCreating, csLoading, csReading, csDestroying и т.п.). Поэтому, уж точно, чем &quot;кишат&quot; исходники VCL, так это проверками этих состояний (по крайней мере проверка особого состояния визуального проектирования csDesigning встречается о-очень часто, если не сказать &quot;на каждом шагу&quot;). Соотв-но, если мы &quot;на свой страх и риск&quot; пытаемся наследоваться от неких стандартных VCL-клаcсов или их обслуги (типа TList), то либо нужно действовать по установленным правилам, либо &quot;пенять на себя&quot;. <br>
Можно конечно обсуждать и мусолить грабли, на которые попался <strong class='tag-b'>Chow</strong>. Но ведь он же сам признался, что пытался наследоваться от ветки TComponent, а значит и сам создавал очередного наследника TComponent, и соотв-но должен был соблюдать &quot;внутренние правила игры&quot; этой ветки, в частности проверять &quot;кое-где&quot; флаг csDestroying. Конечно остается вопрос, а где &quot;кое-где&quot;, и почему именно в Clear. Но что поделаешь, &quot;неразборчивые связи&quot; всегда чреваты сюрпризами ;). К тому же и плюсовые стандарты напичканы не только примерами явных error, но и ill-formed - все ли из них компилятор способен отследить и предупредить?]]></description>
        <author>leo</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274917</guid>
        <pubDate>Fri, 15 Feb 2013 07:40:59 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274917</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274774'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T23:12:11+00:00">14.02.13, 23:12</time></span><div class='quote '>ты не перекрываешь вирт методы в потомке(вообще ни одного)<br>
=<br>
тебе поровну, появится вызов или нет</div></div><br>
А как только решили перекрыть - бежим смотреть деструктор?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>ты перекрываешь вирт методы в потомке<br>
-&gt;<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited;</div><div class="code_line">&nbsp;&nbsp;// удаление полей, с кот. ты работаешь в виртуальных методах</div><div class="code_line">end;</div></ol></div></div></div></div><br>
и не надо ни в чём убеждаться<br>
</div></div><br>
А при переписывании реализации виртуальных методов, проверяем, не сломался ли деструктор? Здорово.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>появился вирт метод -&gt; поправили деструктор</div></div><br>
 :facepalm: <br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>либо для всех вариантов писать деструктор так<br>
и вообще не напрягаться<br>
</div></div><br>
А если я в деструкторе вызываю методы, так или иначе обращающиеся к функциональности базового класса? Нет, все таки у вас получается каша и более менее нормально работать с ней можно только в том случае, если у иерархии один создатель... <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-02-15T07:46:14+00:00">15.02.13, 07:46</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274774'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T23:12:11+00:00">14.02.13, 23:12</time></span><div class='quote '>логируй в BeforeDestruction</div></div><br>
Кстати, а разве для обеспечения полиморфной пост-инициализации не достаточно было бы AfterConstruction?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274807</guid>
        <pubDate>Fri, 15 Feb 2013 05:16:41 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274807</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274771'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T21:54:42+00:00">14.02.13, 21:54</time></span><div class='quote '>в целях безопасности <br>
вот придёт к тебе злой хакер, подключится к компу по FireWire, и сольёт дамп всей физ. памяти к себе на диск   <br>
но это так... я просто пытался придумать какую-нибудь доп. работу в классе, ради которой пришлось бы создавать деструктор<br>
но похоже это тоже не покатит </div></div><br>
Ну, сделаю я аллокатор, зануляющий память, и отдам его контейнеру - делов то :)]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274774</guid>
        <pubDate>Thu, 14 Feb 2013 23:12:11 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274774</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274773'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Chow &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T22:39:11+00:00">14.02.13, 22:39</time></span><div class='quote '>в беседе с тобой надо иметь стальные нервы.</div></div><br>
это хорошо<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274773'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Chow &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T22:39:11+00:00">14.02.13, 22:39</time></span><div class='quote '>Вызов, вызов появится, а не сам метод&#33; Метод давно есть, я давно его перекрыл. Убедился что в родительских деструкторах он не вызывается. Где гарантии что он потом не начнет вызываться?&#33;</div></div><br>
вариант 1<br>
ты не перекрываешь вирт методы в потомке(вообще ни одного)<br>
=<br>
тебе поровну, появится вызов или нет<br>
<br>
вариант 2<br>
ты перекрываешь вирт методы в потомке<br>
-&gt;<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;inherited;</div><div class="code_line">&nbsp;&nbsp;// удаление полей, с кот. ты работаешь в виртуальных методах</div><div class="code_line">end;</div></ol></div></div></div></div><br>
и не надо ни в чём убеждаться<br>
появился вирт метод -&gt; поправили деструктор<br>
либо сразу писать деструктор так<br>
=<br>
и тебе опять поровну<br>
<br>
либо для всех вариантов писать деструктор так<br>
и вообще не напрягаться<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274773'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Chow &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T22:39:11+00:00">14.02.13, 22:39</time></span><div class='quote '>Как я могу залоггировать значение поля класса будучи в деструкторе этого класса (а не будучи в деструкторе его поля&#33;) если у меня нет гарантии что после этого значение поля не изменится в родительских деструкторах?</div></div><br>
первой строкой деструктора и точка<br>
<br>
если же ты имеешь в виду ситуацию<br>
в базовом логируем, а наследник может переопределить порядок вызова<br>
логируй в BeforeDestruction<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274773'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Chow &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T22:39:11+00:00">14.02.13, 22:39</time></span><div class='quote '>Что за бред? Даже если и потеоретизировать - то хакеру пофигу зануление указателей на объекты т.к. это не зануление самих объектов на которые они указывали.<br>
Так что все хакер прекрасно увидит. Какая безопастность? </div></div><br>
речь шла о указателе на область памяти, а не о объектах<br>
и зануление памяти, а не указателя на неё]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274773</guid>
        <pubDate>Thu, 14 Feb 2013 22:39:11 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274773</link>
        <description><![CDATA[Chow: <strong class='tag-b'>Shaggy</strong>, в беседе с тобой надо иметь стальные нервы.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274771'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T21:54:42+00:00">14.02.13, 21:54</time></span><div class='quote '>хм... я сохраню состояние объекта перед удалением<br>
о каком состоянии объекта можно говорить в процессе удаления и зачем такое состояние куда-то сохранять?</div></div><br>
Я хочу сохранить значение всех полей (членов-данных) класса на момент удаления объекта (этого класса) - т.е. сохранить сам класс (его образ, так сказать, перед смертью).<br>
Я не сохраняю объект в процессе удаления. Я сохраняю объект в процессе удаления другого объекта который его аггрегирует (находится в композиции).<br>
Как я могу залоггировать значение поля класса будучи в деструкторе этого класса (а не будучи в деструкторе его поля&#33;) если у меня нет гарантии что после этого значение поля не изменится в родительских деструкторах?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274771'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T21:54:42+00:00">14.02.13, 21:54</time></span><div class='quote '>зачем смотреть всю цепочку? ты в свой деструктор смотри</div></div><br>
Зачем? Что я там не видел?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274771'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T21:54:42+00:00">14.02.13, 21:54</time></span><div class='quote '>ну появится... и что?<br>
от того, что он там появится, у тебя в классе не появится перекрытого виртуального метода<br>
а если такого метода нет, то и о деструкторе беспокоится незачем</div></div><br>
 :wall: <br>
<strong class='tag-b'>Вызов</strong>, вызов появится, а не сам метод&#33; Метод давно есть, я давно его перекрыл. Убедился что в родительских деструкторах он не вызывается. Где гарантии что он потом не начнет вызываться?&#33;<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274771'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T21:54:42+00:00">14.02.13, 21:54</time></span><div class='quote '>в целях безопасности <br>
вот придёт к тебе злой хакер, подключится к компу по FireWire, и сольёт дам всей физ. памяти к себе на диск  </div></div><br>
Вы про FreeAndNil полей класса в его деструкторе? Даже если и потеоретизировать - то хакеру пофигу зануление указателей на объекты т.к. это не зануление самих объектов на которые они указывали.<br>
Так что все хакер прекрасно увидит. Какая безопастность?]]></description>
        <author>Chow</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274771</guid>
        <pubDate>Thu, 14 Feb 2013 21:54:42 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274771</link>
        <description><![CDATA[Shaggy: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274723'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>leo &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T17:32:12+00:00">14.02.13, 17:32</time></span><div class='quote '>Сравни рекомендацию вызывать inherited Destroy как last action, со своим прямо противоположным вариантом решения &quot;всех проблем&quot;. Или ты его рассматриваешь только как затычку в частном случае?</div></div><br>
не всех, а вполне конкретной<br>
[<strong class='tag-b'>добавлено</strong>]<br>
хотя нет, я всё больше склоняюсь к такой конструкции<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">constructor ...</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;// создание своего</div><div class="code_line">&nbsp;&nbsp;// настройка своего</div><div class="code_line">&nbsp;&nbsp;// ...</div><div class="code_line">&nbsp;&nbsp;// вызов унаследованного</div><div class="code_line">&nbsp;&nbsp;// переопределение настроек унаследованного</div><div class="code_line">end;</div></ol></div></div></div></div>ну и наоборот в деструкторе<br>
[/<strong class='tag-b'>добавлено</strong>]<br>
и почему затычка? ты удаление объекта, например, тоже рассматриваешь как затычку к утечке ресурсов?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274723'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>leo &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T17:32:12+00:00">14.02.13, 17:32</time></span><div class='quote '>Я когда-то пробовал (на заре перехода с TP&#092;BP на дельфю) и нарвался на аналогичный косяк - хорошо, что сорцы под рукой и сразу все стало ясно. Между прочим, с тех пор у меня привычка выработалась (праноидальная  ) в сырцы заглядывать - и косяки поискать, ну и поичиться кое-чему заодно  </div></div><br>
я его рассматриваю как аналог таких классов с++, как map, vector, string, etc. который можно допилить до юзабельного состояния с помощью наследования, при отсутствии шаблонов и дженериков<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274755'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Chow &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T19:29:20+00:00">14.02.13, 19:29</time></span><div class='quote '>Нет. В том смылсе что мы состояние объекта запишем, а он может после этого измениться в цепочке родительских деструкторов.</div></div><br>
хм... я сохраню состояние объекта перед удалением<br>
о каком состоянии объекта можно говорить в процессе удаления и зачем такое состояние куда-то сохранять?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274755'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Chow &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T19:29:20+00:00">14.02.13, 19:29</time></span><div class='quote '>Перекрыл метод, просмотрел цепочку родительских деструкторов (муторно но фиг с ним - одни раз терпимо) - он там не вызывается, живу спокойно.</div></div><br>
зачем смотреть всю цепочку? ты в свой деструктор смотри<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274755'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Chow &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T19:29:20+00:00">14.02.13, 19:29</time></span><div class='quote '>Откуда мне знать что в том обновлении нигде в деструкторе не появился вызов вирутального метода? Опять все цепочки перепроверять? Для всех проектов которые хочу пересобрать используя новую библиотеку/среду шерстить код вручную? </div></div><br>
ну появится... и что?<br>
от того, что он там появится, у тебя в классе не появится перекрытого виртуального метода<br>
а если такого метода нет, то и о деструкторе беспокоится незачем<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274736'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>MyNameIsIgor &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T18:37:52+00:00">14.02.13, 18:37</time></span><div class='quote '>А зачем их занулять? </div></div><br>
в целях безопасности <br>
вот придёт к тебе злой хакер, подключится к компу по FireWire, и сольёт дамп всей физ. памяти к себе на диск  :) <br>
но это так... я просто пытался придумать какую-нибудь доп. работу в классе, ради которой пришлось бы создавать деструктор<br>
но похоже это тоже не покатит]]></description>
        <author>Shaggy</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274761</guid>
        <pubDate>Thu, 14 Feb 2013 20:41:20 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274761</link>
        <description><![CDATA[Qraizer: <strong class='tag-b'>leo</strong> вообще-то дело говорит<span class="tag-color tag-color-named" data-value="gray" style="color: gray">, хотя, похоже, сам этого не понимает</span>. Это как раз то, на предмет чего я просил напомнить. Спасибо, <strong class='tag-b'>leo</strong>.<br>
Ваша дискуссия лишний раз подтверждает тот факт, что процессы создания и разрушения объекта являются весьма щепетильными промежутками времени его (полу)существования. В плюсовой объектной модели поэтому и было решено во избежание прецедентов считать, что время жизни объекта не начинается, пока его конструктор полностью не завершит работу, и перестаёт существовать в момент вызова его деструктора, а также, что производные классы никак не должны влиять на щепетильные процессы базовых классов. Из этого и следует законодательно устаканенный порядок вызова конструкторов и деструкторов подобъектов. За этим следит компилятор, априори он не ошибается. Это даёт все необходимые гарантии для отношений между базовыми и производными классами - базовые классы защищены от влияния производных, производные имеют полное право полагаться на инварианты контрактов базовых. В Дельфи принято (ИМХО избыточно) демократическое решение, которое позволяет при необходимости вытворять очень клёвые вещи<sup class='tag-sup'>1)</sup>. К сожалению в подавляющем большинстве практических ситуации, когда такой необходимости нет, за эту демократию приходится платить.<br>
Конструкторы и деструкторы не даром называются &quot;специальными методами классов&quot;. Они вынуждены работать с неким нечто, что вроде бы объект, но пока ещё или уже таковым не является. Ничего удивительного, в этом их предназначение - из мусора сделать объект с инвариантами или наоборот превратить объект в кучу шлака, который безболезненно может быть слит в утиль. И в объектной модели плюсов этими спец.методами и ограничивается набор мест в коде, где вместо объекта можно встретить шлак. В результате все остальные методы (все&#33; без исключения) самого объекта имеет полное право рассчитывать на инварианты, созданные конструктором и ещё не уничтоженные деструктором. Никаких проверок, никаких <s class='tag-s'>костылей</s> страховочных подстилок в лице хоть тех же занулений, никаких неожиданностей от базовых классов производным и наоборот. Нет инварианта -&gt; исключение из конструктора -&gt; нет объекта. Есть объект -&gt; не было исключения -&gt; конструктор завершился -&gt; объект заинвариантен.<br>
Вот основная причина, почему конструкторы и деструкторы обычно просты. Т.к. они не являются методами, манипулирующими состоянием объекта, поэтому пользователю класса они не нужны никогда, кроме крайних моментов времени существования его экземпляров. Поэтому они выполняют действия, практически никогда не нужные в другие моменты времени существования экземпляров класса. Поэтому они редко нуждаются в дальнейшей декомпозиции в пределах своей ответственности - области видимости своего класса. Однако иногда в такой декомпозиции потребность возникает. Например, если несколько конструкторов выполняют однотипные действия, или сходные действия понадобились в перегруженной операции присваивания. Никто не запрещает ввести методы для этого. Ради бога, почему нет. Но&#33; В этом случае такие методы тоже следует отнести к спец.методам, ведь они тоже работают в щепетильные моменты времени, и вне этих моментов в них нет нужды. Вывод? ... Правильно&#33; этим методам нечего делать в интерфейсе класса. Другими словами: методы, используемые конструкторами или деструкторами, обязаны быть приватными. Это решает все проблемы. Ну или по крайней мере эти проблемы не покидают пределов класса.<br>
Так что там у вас с Clear из деструкторов? <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2013-02-14T20:47:07+00:00">14.02.13, 20:47</time></span></span><br>
<hr><sup class='tag-sup'>1)</sup> Не составляет труда получить эффект очень клёвой вещи на Плюсах. Методика проста и может быть выужена даже не самым внимательным человеком буквально с предыдущих страниц. Никто ею не пользуется, почему-то. Интересно, почему? Не нужна?]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274755</guid>
        <pubDate>Thu, 14 Feb 2013 19:29:20 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274755</link>
        <description><![CDATA[Chow: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274697'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T16:32:48+00:00">14.02.13, 16:32</time></span><div class='quote '>каких конструкторов? мы в деструкторе находимся</div></div><br>
Деструкторов. Извините - опечатался.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274697'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T16:32:48+00:00">14.02.13, 16:32</time></span><div class='quote '>и каким образом изменится? запись в лог повлияет на состояние объекта что-ли?</div></div><br>
Нет. В том смылсе что мы состояние объекта запишем, а он может после этого измениться в цепочке родительских деструкторов.<br>
<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274697'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T16:32:48+00:00">14.02.13, 16:32</time></span><div class='quote '>перекрыл виртуальный метод, посмотри в деструктор<br>
по моему просто...</div></div><br>
Перекрыл метод, просмотрел цепочку родительских деструкторов (муторно но фиг с ним - одни раз терпимо) - он там не вызывается, живу спокойно.<br>
Давно уже забыл... В один прекрасный момент обновил библиотеку (или вообще среду где новая версия VCL)..<br>
Откуда мне знать что в том обновлении нигде в деструкторе не <strong class='tag-b'>появился </strong>вызов вирутального метода? Опять все цепочки перепроверять? Для всех проектов которые хочу пересобрать используя новую библиотеку/среду шерстить код вручную?]]></description>
        <author>Chow</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274736</guid>
        <pubDate>Thu, 14 Feb 2013 18:37:52 +0000</pubDate>
        <title>Delphi vs C++ vs C#</title>
        <link>https://forum.sources.ru/index.php?showtopic=314686&amp;view=findpost&amp;p=3274736</link>
        <description><![CDATA[MyNameIsIgor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=314686&view=findpost&p=3274697'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Shaggy &#064; <time class="tag-quote__quoted-time" datetime="2013-02-14T16:32:48+00:00">14.02.13, 16:32</time></span><div class='quote '>например добавляется указатель на сырые данные<br>
которые надо перед удалением занулить </div></div><br>
А зачем их занулять?]]></description>
        <author>MyNameIsIgor</author>
        <category>Holy Wars</category>
      </item>
	
      </channel>
      </rss>
	