English version

RSS

Deep C++

Автор: Павел Кузнецов
Источник: RSDN Magazine #5-2004
Аннотация: - Бывают ли в C++ чисто виртуальные деструкторы? Кажется мне, что нет – ведь деструктор наследника обязан вызвать деструктор базового класса. А что ему делать, если у базового класса деструктор не определен? - Является ли в C++ имя функции указателем на ее начало, как это было в С?

Ключевые слова:
Автор: Андрей Тарасевич
Аннотация: Q. Довольно продолжительное время ломаю голову - когда делать функцию константной, а когда в этом нет необходимости???

Ключевые слова:
Автор: Кодт
Аннотация: <span class='lineQuote level2'>G&gt;&gt;как понимать const volatile и зачем оно такое нужно?</span><br /> <span class='lineQuote level1'><br /> ПК&gt;volatile означает, что объект может изменяться как-то помимо действий программы, const — объект действиями программы через данный идентификатор не изменяется. const volatile — объект изменяется только "внешними" по отношению к программе с...</span>

Ключевые слова:
Автор: What
Аннотация: Здравствуйте, Yozh_Programmer, Вы писали:<br /> <span class='lineQuote level1'><br /> Y_P&gt;Почему этот код</span><br /> <span class='lineQuote level1'><br /> <br /> Y_P&gt;[ccode]</span><br /> <span class='lineQuote level1'>Y_P&gt;#include &lt;windows.h&gt;</span><br /> <span class='lineQuote level1'>Y_P&gt;#include &lt;stdio.h&gt;</span><br /> <span class='lineQuote level1'>Y_P&gt;#define _USE_MATH_DEFINES</span><br /> <span class='lineQuote level1'>Y_P&gt;#include &lt;math.h&gt;</span><br /> <span class='lineQuote level1'>Y_P&gt;#include &lt;conio.h&gt;</span><br /> <span class='lineQuote level1'><br /> Y_P&gt;const double Log10 = log(10.0);</span><br /> <span class='lineQuote level1'><br /> Y_P&gt;int main()</span><br /> <span class='lineQuote level1'>Y_P&gt;{</span><br /> <span class='lineQuote level1'>Y_P&gt; int x = 100;</span><br /> <span class='lineQuote level1'>Y_P&gt; p...</span>

Ключевые слова:
Автор: Сергей Холодилов
Источник: RSDN Magazine #3-2008
Аннотация: Библиотека ввода-вывода языка С++ — достаточно спорное явление. Но, так или иначе, она существует, иногда используется, и надо как-то с этим жить.

Ключевые слова: stream
Автор: Павел Кузнецов
Аннотация: lvalue и rvalue - что это такое.

Ключевые слова: lvalue,rvalue
Автор: Robert Schmidt
Перевод: Igor Sukharev
Источник: MSDN
Аннотация: Судя по группам новостей, посвященных C++, разница между четырьмя операторами приведения типа

Ключевые слова:
Автор: Mr. None
Аннотация: Здравствуйте, Аноним, Вы писали:<br /> <span class='lineQuote level1'><br /> А&gt;Здравствуйте, Аноним, Вы писали:</span><br /> <span class='lineQuote level2'><br /> А&gt;&gt;Гарантируется ли стандартом размещение элементов строки в непрерывном блоке памяти, как это сделано для вектора? И имеет ли строка нуль терминатор равный *(string.end()). Спасибо</span><br /> <span class='lineQuote level1'>А&gt;Гарантируется если вызовешь c_str(), а в ...</span>

Ключевые слова:
Автор: Андрей Тарасевич
Аннотация: <span class='lineQuote level1'>К&gt;Все совершенно верно про неопределенное поведение.</span><br /> <span class='lineQuote level1'>К&gt;<b>Любая функция с побочным эффектом</b> (а оператор автоинкремента таковым является) способна дать такой же результат.</span><br /> <br /> Не совсем так. Важным является тот факт, что несколько модификаций одного скалярного объекта оказались зажатыми между дву...

Ключевые слова:
Автор: Андрей Тарасевич
Аннотация: <span class='lineQuote level1'>NG&gt;Объясните каким правилом разруливается ситуация сравнения знаковых/беззнаковых целых в следующем примере:</span><br /> <br /> Сравнения знакового и беззнакового делается как беззнаковое. Т.е. знаковое значение приводится к беззнаковому типу.<br /> <span class='lineQuote level1'><br /> NG&gt; int i = -1;</span><br /> <span class='lineQuote level1'>NG&gt; unsigned int ui = 10;</span><br /> <span class='lineQuote level1'><br /> NG&gt; if (i &lt; ui)</span><br /> <span class='lineQuote level1'>NG&gt; {</span><br /> ...

Ключевые слова:
Автор: Павел Кузнецов
Аннотация: <span class='lineQuote level1'>А&gt;Какая между ними разница(unspecified и undefined)?</span><br /> <br /> Различается несколько вариантов поведения программ, выходящего за рамки стандарта: undefined, unspecified и implementation-defined.<br /> <br /> <b>Implementation-defined behavior (1.3.5)</b><br /> <br /> Самый мягкий вариант. Поведение программы при корректных вх...

Ключевые слова:
Автор: Андрей Тарасевич
Аннотация: <span class='lineQuote level1'>К&gt;Все совершенно верно про неопределенное поведение.</span><br /> <span class='lineQuote level1'>К&gt;<b>Любая функция с побочным эффектом</b> (а оператор автоинкремента таковым является) способна дать такой же результат.</span><br /> <br /> Не совсем так. Важным является тот факт, что несколько модификаций одного скалярного объекта оказались зажатыми между дву...

Ключевые слова:
Автор: Андрей Тарасевич
Аннотация: <span class='lineQuote level1'>А&gt;по C NULL машинно зависим т.е. может и не быть в представлении машины нулем,</span><br /> <span class='lineQuote level1'>А&gt;а Страуструп пишет что можно безболезненно менять 0 на NULL. Что делать?</span><br /> <br /> Ты путаешь понятие "физического нуля" с понятием "логического нуля". <br /> <br /> Есть понятие null-pointer constant. И есть понятие null-pointer value...

Ключевые слова:
Автор: Кодт
Аннотация: Здравствуйте, cppNewbie, Вы писали:<br /> <span class='lineQuote level1'><br /> N&gt;Если инициализировать указатель родительского класса адресом объекта дочернего класса и объявить в родительском классе деструктор виртуальным, то при "разрушении" дочернего объекта через этот указатель сначала выполнится деструктор дочернего класса, а потом д...</span>

Ключевые слова:
Автор: Павел Кузнецов
Аннотация: <span class='lineQuote level1'>Д&gt; кажется мне, что нет... ведь деструктор наследника обязан вызвать деструктор</span><br /> <span class='lineQuote level1'>Д&gt; базового класса. А что ему делать, если у базового класса деструктор не определен?</span><br /> <br /> Чисто виртуальные деструкторы бывают. В этом отношении деструкторы ведут себя так же, как и любые другие функции, за упомянутым ис...

Ключевые слова:
Автор: Павел Кузнецов
Аннотация: <span class='lineQuote level1'>GR&gt;Какой смысл несёт модификатор static для:</span><br /> <span class='lineQuote level1'>GR&gt;1) переменных, объявленных внутри функции ???</span><br /> <span class='lineQuote level1'>GR&gt;2) глобальных объектов ???</span><br /> <br /> static -- "перегруженное" ключевое слово C++.<br /> <br /> 1) При объявлении члена класса (функции или переменной) ключевое слово static означает, что этот член класса является стат...

Ключевые слова:
Автор: Павел Кузнецов
Аннотация: Undead,<br /> <br /> <pre class='c'><code>&gt; mem_fun( SomeClass::SomeFunction )</code></pre><br /> <span class='lineQuote level1'>&gt; Ведь имя функции само по себе является указателем</span><br /> <br /> [list]<br /> <li /> Имя функции само по себе указателем не является, но, в целях совместимости с C, любое выражение, обозначающее "обычную" функцию (не функцию-член), может быть неявно ...

Ключевые слова:
Автор: Павел Кузнецов
Аннотация: <span class='lineQuote level1'>К&gt; Я правильно понимаю, что c-style cast &mdash; это компилятор </span><br /> <span class='lineQuote level1'> К&gt; последовательно пробует сделать function cast, static_cast, </span><br /> <span class='lineQuote level1'> К&gt; а если не получилось &mdash; то reinterpret_cast ?</span><br /> <br /> Почти.<br /> <br /> function cast с одним аргументом определяется как раз через c-style cast, поэтому его, вообще, рассматривать не...

Ключевые слова:
Автор: Андрей Тарасевич
Аннотация: <span class='lineQuote level1'>А&gt;Какая разница между</span><br /> <br /> <pre class='c'><code>A *ptr = <span class='kw'>new</span> B();</code></pre><br /> <span class='lineQuote level1'>А&gt;и </span><br /> <pre class='c'><code>A *ptr = <span class='kw'>new</span> B;</code></pre><br /> В первом случае: выполняется value-initialization. Во втором случае: для не-POD класс типов выполняется default-initialization, а для остальных типов вообще никакой инициализации не делается.<br /> <br /> ...

Ключевые слова:
Автор: Александр Насонов
Перевод: Алифанов Андрей
Источник: RSDN Magazine #3-2004
Аннотация: Статья о решении проблем, возникающих в, казалось бы, тривиальных ситуациях при использовании mixin-класса.

Ключевые слова:
Автор: Андрей Тарасевич
Аннотация: Здравствуйте, Bell, Вы писали:<br /> <span class='lineQuote level1'><br /> B&gt;В данном да. Но ИМХО всегда следует придеживаться определенных правил. При программировании на С++ самодисциплина играет далеко не самую последнюю роль.</span><br /> <br /> Правило "Не делать наследования от классов без виртуального деструктора" является одним из тех ложных правил...

Ключевые слова:
Автор: Павел Кузнецов
Аннотация: Здравствуйте, KPavel, Вы писали:<br /> <span class='lineQuote level1'><br /> K&gt; Определяется ли порядок разрушения статических и глобальных объектов</span><br /> <span class='lineQuote level1'>K&gt; порядком инициализации? Если да, то как &mdash; LIFO?</span><br /> <br /> Именно так. При этом, гарантируется, что разрушение будет происходить именно в таком порядке,<br /> независимо от того, в каких единицах транс...

Ключевые слова:
Автор: Гайфулин Руслан
Источник: RSDN Magazine #1-2009
Аннотация: В статье описывается быстрый и легкий способ определить, в какой последовательности будут вызываться конструкторы классов в иерархии любой сложности.

Ключевые слова:
Автор: Алексей Серебряков
Источник: RSDN Magazine #2-2008
Аннотация: Ошибки, связанные с форматом строки, могут позволить злоумышленнику получить контроль над системой. Статья описывает примеры ошибочного использования printf()-подобных функций, а также возможные последствия таких ошибок.

Ключевые слова: printf
Автор: MaximE
Аннотация: ethan hunt wrote:<br /> <span class='lineQuote level1'><br /> &gt; Господа,</span><br /> <span class='lineQuote level1'>&gt; извиняюсь за тупость, но почему в отдельный поток можно кидать только статическую функцию-член класса. До конца не понимаю (может из-за недосыпания).</span><br /> <br /> Потому, что статическая функция-член имеет такой же тип, как и обычная ф-ция (в отличее от нестатической фун-ции...

Ключевые слова:
Автор: LaptevVV
Аннотация: Здравствуйте, nap2k, Вы писали:<br /> <span class='lineQuote level1'><br /> N&gt;Как в С++ реализуется сабж (типа как в sprintf())</span><br /> Почитайте это.<br /> <br /> [q]<br /> Язык C++ вслед за С позволяет писать функции с переменным числом параметров. Одним из простых примеров может служить функция, вычисляющая среднее арифметическое своих аргументов. Другой уже...

Ключевые слова:
Автор: Валерий Лаптев
Источник: RSDN Magazine #4-2004
Аннотация: В этой статье рассказывается о методах отделения реализации шаблона от его интерфейсной части и о том, как можно заставить это работать на популярных компиляторах наподобие MS Visual C++.

Ключевые слова: templates
Автор: Erop
Аннотация: Здравствуйте, xexe2, Вы писали:<br /> <span class='lineQuote level1'><br /> X&gt;Уважаемый ол, чему же именно равен размер объекта в куче?</span><br /> <br /> Собственно сначала отвечу про sizeof<br /> <br /> На самом деле для любого типа в C++ можно вычислить, кроме sizeof ещё один параметр -- выравнивание.<br /> Выравнивание -- это число, которому должны быть кратны смеще...

Ключевые слова:
Автор: Кодт
Аннотация: Здравствуйте, Аноним, Вы писали:<br /> <span class='lineQuote level1'><br /> А&gt;И в чем их смысл? В частности char_traits, например.</span><br /> <br /> В расширении, группировке и обобщении инструментария, относящегося к тому или иному типу.<br /> <br /> Допустим, у нас есть некий класс T, и нам потребовалось добавить функциональность &mdash; приведение к целому и обратно...

Ключевые слова: