27.12.2002
C++ Q&A
|
|
Аннотация: - Бывают ли в C++ чисто виртуальные деструкторы? Кажется мне, что нет – ведь деструктор наследника обязан вызвать деструктор базового класса. А что ему делать, если у базового класса деструктор не определен?
- Является ли в C++ имя функции указателем на ее начало, как это было в С?
Ключевые слова: |
30.10.2004
const - когда быть, когда не быть
|
|
Аннотация: Q. Довольно продолжительное время ломаю голову - когда делать функцию константной, а когда в этом нет необходимости???
Ключевые слова: |
28.03.2003
const volatile
|
|
Аннотация: <span class='lineQuote level2'>G>>как понимать const volatile и зачем оно такое нужно?</span><br />
<span class='lineQuote level1'><br />
ПК>volatile означает, что объект может изменяться как-то помимо действий программы, const — объект действиями программы через данный идентификатор не изменяется. const volatile — объект изменяется только "внешними" по отношению к программе с...</span>
Ключевые слова: |
12.12.2004
double - одинаковые вычисления, разные результаты
|
|
Аннотация: Здравствуйте, Yozh_Programmer, Вы писали:<br />
<span class='lineQuote level1'><br />
Y_P>Почему этот код</span><br />
<span class='lineQuote level1'><br />
<br />
Y_P>[ccode]</span><br />
<span class='lineQuote level1'>Y_P>#include <windows.h></span><br />
<span class='lineQuote level1'>Y_P>#include <stdio.h></span><br />
<span class='lineQuote level1'>Y_P>#define _USE_MATH_DEFINES</span><br />
<span class='lineQuote level1'>Y_P>#include <math.h></span><br />
<span class='lineQuote level1'>Y_P>#include <conio.h></span><br />
<span class='lineQuote level1'><br />
Y_P>const double Log10 = log(10.0);</span><br />
<span class='lineQuote level1'><br />
Y_P>int main()</span><br />
<span class='lineQuote level1'>Y_P>{</span><br />
<span class='lineQuote level1'>Y_P> int x = 100;</span><br />
<span class='lineQuote level1'>Y_P> p...</span>
Ключевые слова: |
28.12.2008
HOWTO: Свой поток ввода-вывода
|
|
Аннотация: Библиотека ввода-вывода языка С++ — достаточно спорное явление. Но, так или иначе, она существует, иногда используется, и надо как-то с этим жить.
Ключевые слова: stream |
02.01.2004
Q&A: lvalue и rvalue
|
|
Аннотация: lvalue и rvalue - что это такое.
Ключевые слова: lvalue,rvalue |
30.09.2002
Deep C++. Operation: static_cast
|
|
Аннотация: Судя по группам новостей, посвященных C++, разница между четырьмя операторами приведения типа
Ключевые слова: |
29.03.2005
std::string as std::vector?
|
|
Аннотация: Здравствуйте, Аноним, Вы писали:<br />
<span class='lineQuote level1'><br />
А>Здравствуйте, Аноним, Вы писали:</span><br />
<span class='lineQuote level2'><br />
А>>Гарантируется ли стандартом размещение элементов строки в непрерывном блоке памяти, как это сделано для вектора? И имеет ли строка нуль терминатор равный *(string.end()). Спасибо</span><br />
<span class='lineQuote level1'>А>Гарантируется если вызовешь c_str(), а в ...</span>
Ключевые слова: |
23.04.2002
undefined и unspecified: разница между операциями и функциям
|
|
Аннотация: <span class='lineQuote level1'>К>Все совершенно верно про неопределенное поведение.</span><br />
<span class='lineQuote level1'>К><b>Любая функция с побочным эффектом</b> (а оператор автоинкремента таковым является) способна дать такой же результат.</span><br />
<br />
Не совсем так. Важным является тот факт, что несколько модификаций одного скалярного объекта оказались зажатыми между дву...
Ключевые слова: |
06.08.2004
Signed/unsigned comparison
|
|
Аннотация: <span class='lineQuote level1'>NG>Объясните каким правилом разруливается ситуация сравнения знаковых/беззнаковых целых в следующем примере:</span><br />
<br />
Сравнения знакового и беззнакового делается как беззнаковое. Т.е. знаковое значение приводится к беззнаковому типу.<br />
<span class='lineQuote level1'><br />
NG> int i = -1;</span><br />
<span class='lineQuote level1'>NG> unsigned int ui = 10;</span><br />
<span class='lineQuote level1'><br />
NG> if (i < ui)</span><br />
<span class='lineQuote level1'>NG> {</span><br />
...
Ключевые слова: |
17.03.2003
unspecified != undefined
|
|
Аннотация: <span class='lineQuote level1'>А>Какая между ними разница(unspecified и undefined)?</span><br />
<br />
Различается несколько вариантов поведения программ, выходящего за рамки стандарта: undefined, unspecified и implementation-defined.<br />
<br />
<b>Implementation-defined behavior (1.3.5)</b><br />
<br />
Самый мягкий вариант. Поведение программы при корректных вх...
Ключевые слова: |
23.04.2002
undefined и unspecified: разница между операциями и функциям
|
|
Аннотация: <span class='lineQuote level1'>К>Все совершенно верно про неопределенное поведение.</span><br />
<span class='lineQuote level1'>К><b>Любая функция с побочным эффектом</b> (а оператор автоинкремента таковым является) способна дать такой же результат.</span><br />
<br />
Не совсем так. Важным является тот факт, что несколько модификаций одного скалярного объекта оказались зажатыми между дву...
Ключевые слова: |
10.12.2003
NULL или 0 ?
|
|
Аннотация: <span class='lineQuote level1'>А>по C NULL машинно зависим т.е. может и не быть в представлении машины нулем,</span><br />
<span class='lineQuote level1'>А>а Страуструп пишет что можно безболезненно менять 0 на NULL. Что делать?</span><br />
<br />
Ты путаешь понятие "физического нуля" с понятием "логического нуля". <br />
<br />
Есть понятие null-pointer constant. И есть понятие null-pointer value...
Ключевые слова: |
30.04.2004
Вопрос новичка про виртуальный деструктор
|
|
Аннотация: Здравствуйте, cppNewbie, Вы писали:<br />
<span class='lineQuote level1'><br />
N>Если инициализировать указатель родительского класса адресом объекта дочернего класса и объявить в родительском классе деструктор виртуальным, то при "разрушении" дочернего объекта через этот указатель сначала выполнится деструктор дочернего класса, а потом д...</span>
Ключевые слова: |
03.04.2003
А чисто виртуальные деструкторы - бывают?
|
|
Аннотация: <span class='lineQuote level1'>Д> кажется мне, что нет... ведь деструктор наследника обязан вызвать деструктор</span><br />
<span class='lineQuote level1'>Д> базового класса. А что ему делать, если у базового класса деструктор не определен?</span><br />
<br />
Чисто виртуальные деструкторы бывают. В этом отношении деструкторы ведут себя так же, как и любые другие функции, за упомянутым ис...
Ключевые слова: |
28.08.2002
Смысл static
|
|
Аннотация: <span class='lineQuote level1'>GR>Какой смысл несёт модификатор static для:</span><br />
<span class='lineQuote level1'>GR>1) переменных, объявленных внутри функции ???</span><br />
<span class='lineQuote level1'>GR>2) глобальных объектов ???</span><br />
<br />
static -- "перегруженное" ключевое слово C++.<br />
<br />
1) При объявлении члена класса (функции или переменной) ключевое слово static означает, что этот член класса является стат...
Ключевые слова: |
21.11.2004
Имена функций и указатели на функции
|
|
Аннотация: Undead,<br />
<br />
<pre class='c'><code>> mem_fun( SomeClass::SomeFunction )</code></pre><br />
<span class='lineQuote level1'>> Ведь имя функции само по себе является указателем</span><br />
<br />
[list]<br />
<li /> Имя функции само по себе указателем не является, но, в целях совместимости с C, любое выражение, обозначающее "обычную" функцию (не функцию-член), может быть неявно ...
Ключевые слова: |
29.01.2004
Как работает C-style cast
|
|
Аннотация: <span class='lineQuote level1'>К> Я правильно понимаю, что c-style cast — это компилятор </span><br />
<span class='lineQuote level1'> К> последовательно пробует сделать function cast, static_cast, </span><br />
<span class='lineQuote level1'> К> а если не получилось — то reinterpret_cast ?</span><br />
<br />
Почти.<br />
<br />
function cast с одним аргументом определяется как раз через c-style cast, поэтому его, вообще, рассматривать не...
Ключевые слова: |
07.12.2004
Какая разница между new T и new T()
|
|
Аннотация: <span class='lineQuote level1'>А>Какая разница между</span><br />
<br />
<pre class='c'><code>A *ptr = <span class='kw'>new</span> B();</code></pre><br />
<span class='lineQuote level1'>А>и </span><br />
<pre class='c'><code>A *ptr = <span class='kw'>new</span> B;</code></pre><br />
В первом случае: выполняется value-initialization. Во втором случае: для не-POD класс типов выполняется default-initialization, а для остальных типов вообще никакой инициализации не делается.<br />
<br />
...
Ключевые слова: |
28.11.2004
Небольшой нюанс
|
|
Аннотация: Статья о решении проблем, возникающих в, казалось бы, тривиальных ситуациях при использовании mixin-класса.
Ключевые слова: |
25.10.2003
Наследование от классов без виртуального деструктора?
|
|
Аннотация: Здравствуйте, Bell, Вы писали:<br />
<span class='lineQuote level1'><br />
B>В данном да. Но ИМХО всегда следует придеживаться определенных правил. При программировании на С++ самодисциплина играет далеко не самую последнюю роль.</span><br />
<br />
Правило "Не делать наследования от классов без виртуального деструктора" является одним из тех ложных правил...
Ключевые слова: |
26.07.2003
Разрушение статических объектов
|
|
Аннотация: Здравствуйте, KPavel, Вы писали:<br />
<span class='lineQuote level1'><br />
K> Определяется ли порядок разрушения статических и глобальных объектов</span><br />
<span class='lineQuote level1'>K> порядком инициализации? Если да, то как — LIFO?</span><br />
<br />
Именно так. При этом, гарантируется, что разрушение будет происходить именно в таком порядке,<br />
независимо от того, в каких единицах транс...
Ключевые слова: |
25.02.2009
Обход графа наследования в C++
|
|
Аннотация: В статье описывается быстрый и легкий способ определить, в какой последовательности будут вызываться конструкторы классов в иерархии любой сложности.
Ключевые слова: |
27.08.2008
Строка формата строки
|
|
Аннотация: Ошибки, связанные с форматом строки, могут позволить злоумышленнику получить контроль над системой. Статья описывает примеры ошибочного использования printf()-подобных функций, а также возможные последствия таких ошибок.
Ключевые слова: printf |
08.08.2004
Поток и функция-член класса
|
|
Аннотация: ethan hunt wrote:<br />
<span class='lineQuote level1'><br />
> Господа,</span><br />
<span class='lineQuote level1'>> извиняюсь за тупость, но почему в отдельный поток можно кидать только статическую функцию-член класса. До конца не понимаю (может из-за недосыпания).</span><br />
<br />
Потому, что статическая функция-член имеет такой же тип, как и обычная ф-ция (в отличее от нестатической фун-ции...
Ключевые слова: |
22.10.2003
Функции с переменным числом параметров
|
|
Аннотация: Здравствуйте, nap2k, Вы писали:<br />
<span class='lineQuote level1'><br />
N>Как в С++ реализуется сабж (типа как в sprintf())</span><br />
Почитайте это.<br />
<br />
[q]<br />
Язык C++ вслед за С позволяет писать функции с переменным числом параметров. Одним из простых примеров может служить функция, вычисляющая среднее арифметическое своих аргументов. Другой уже...
Ключевые слова: |
30.10.2004
Шаблоны и модули
|
|
Аннотация: В этой статье рассказывается о методах отделения реализации шаблона от его интерфейсной части и о том, как можно заставить это работать на популярных компиляторах наподобие MS Visual C++.
Ключевые слова: templates |
28.10.2005
Что вернёт sizeof?
|
|
Аннотация: Здравствуйте, xexe2, Вы писали:<br />
<span class='lineQuote level1'><br />
X>Уважаемый ол, чему же именно равен размер объекта в куче?</span><br />
<br />
Собственно сначала отвечу про sizeof<br />
<br />
На самом деле для любого типа в C++ можно вычислить, кроме sizeof ещё один параметр -- выравнивание.<br />
Выравнивание -- это число, которому должны быть кратны смеще...
Ключевые слова: |
13.01.2005
Что есть traits?
|
|
Аннотация: Здравствуйте, Аноним, Вы писали:<br />
<span class='lineQuote level1'><br />
А>И в чем их смысл? В частности char_traits, например.</span><br />
<br />
В расширении, группировке и обобщении инструментария, относящегося к тому или иному типу.<br />
<br />
Допустим, у нас есть некий класс T, и нам потребовалось добавить функциональность — приведение к целому и обратно...
Ключевые слова: |