Описание тега c++-faq

Предоставляет совместные редактируемые сообществом часто задаваемые вопросы по C++.
31 ответ

Каковы различия между структурой и классом в C++?

Этот вопрос уже задавался в контексте C#/.NET. Теперь я хотел бы изучить различия между структурой и классом в C++. Пожалуйста, обсудите технические различия, а также причины выбора того или иного в дизайне ОО. Начну с очевидной разницы: Если вы не …
18 сен '08 в 14:09
5 ответов

Каковы все функции-члены, созданные компилятором для класса? Это случается все время?

Каковы все функции-члены, созданные компилятором для класса? Это случается все время? как деструктор. Меня интересует, создан ли он для всех классов, и зачем нужен конструктор по умолчанию?
14 ответов

Что такое умный указатель и когда я должен его использовать?

Что такое умный указатель и когда я должен его использовать?
20 сен '08 в 00:09
12 ответов

Что означает явное ключевое слово?

Что это explicit Ключевое слово означает в C++?
4 ответа

Каков правильный ответ для cout << a++ << a;?

Недавно в одном из интервью возник следующий вопрос объективного типа. int a = 0; cout &lt;&lt; a++ &lt;&lt; a; ответы: а. 10б. 01с. неопределенное поведение Я ответил на вариант b, то есть вывод будет "01". Но к моему удивлению позже интервьюер ска…
28 май '12 в 10:09
1 ответ

Каковы новые функции в C++17?

C++17 теперь полностью готов, поэтому вряд ли он претерпит большие изменения. Сотни предложений были выдвинуты для C++17. Какие из этих функций были добавлены в C++ в C++17? При использовании компилятора C++, который поддерживает "C++1z", какие из э…
27 июн '16 в 18:06
4 ответа

Что такое прозрачные компараторы?

В C++14 ассоциативные контейнеры, по-видимому, изменились по сравнению с C++11 - [associative.reqmts]/13 говорит: Шаблоны функций-членов find, count, lower_bound, upper_bound, а также equal_range не должны участвовать в разрешении перегрузки, если т…
01 дек '13 в 21:21
19 ответов

Почему летучие существуют?

Что это volatile ключевое слово делать? В C++ какую проблему это решает? В моем случае я никогда сознательно не нуждался в этом.
16 сен '08 в 13:59
2 ответа

Что такое шаблоны вывода и когда мы должны их использовать?

Стандарт C++17 вводит "руководство по выводу шаблона". Я полагаю, что они имеют какое-то отношение к новому выводу аргументов шаблона для конструкторов, представленному в этой версии стандарта, но я еще не видел простого объяснения в стиле FAQ того,…
03 дек '16 в 19:35
2 ответа

Обоснование принуждения некоторых операторов к участию

В C++ есть 4 оператора, которые могут быть перегружены, но не могут быть перегружены как отдельно стоящие (иначе говоря, автономные) функции. Эти операторы: operator = operator () operator -&gt; operator [] Эта тема прекрасно объясняет причину запре…
14 окт '10 в 22:15
4 ответа

Когда сделать тип неподвижным в C++11?

Я был удивлен, что это не показывается в моих результатах поиска, я думал, что кто-то бы спрашивал это раньше, учитывая полезность семантики перемещения в C++ 11: Когда мне нужно (или это хорошая идея для меня) сделать класс неподвижным в C++ 11? (П…
13 янв '13 в 11:05
5 ответов

Объясните C++ SFINAE программисту, не являющемуся C++

Что такое SFINAE в C++? Не могли бы вы объяснить это словами, понятными программисту, который не разбирается в C++? Кроме того, какому понятию в языке вроде Python соответствует SFINAE?
04 авг '10 в 16:28
1 ответ

Сколько существует версий стандартов C++?

В C есть C89, C99 и C11; что насчет C++? Есть ли обновление с тех пор, как оно вышло?
15 окт '10 в 07:49
8 ответов

Зачем нам на самом деле нужно частное или защищенное наследование в C++?

В C++ я не могу вспомнить случай, в котором я хотел бы наследовать private/protected от базового класса: class Base; class Derived1 : private Base; class Derived2 : protected Base; Это действительно полезно?
17 дек '08 в 12:29
6 ответов

Что такое любопытно повторяющийся шаблон (CRTP)?

Не обращаясь к книге, кто-нибудь может дать хорошее объяснение CRTP с примером кода?
13 ноя '10 в 15:30
9 ответов

Почему использование "нового" вызывает утечки памяти?

Сначала я выучил C#, а сейчас начинаю с C++. Как я понимаю, оператор new в C++ не похож на тот, что в C#. Можете ли вы объяснить причину утечки памяти в этом примере кода? class A { ... }; struct B { ... }; A *object1 = new A(); B object2 = *(new B(…
12 янв '12 в 18:01
11 ответов

Каковы все распространенные неопределенные поведения, о которых должен знать программист C++?

Каковы все распространенные неопределенные поведения, о которых должен знать программист C++? Скажи, как: a[i] = i++;
15 дек '08 в 06:55
2 ответа

Уничтожение объектов в C++

Когда именно объекты уничтожаются в C++, и что это значит? Нужно ли уничтожать их вручную, поскольку нет сборщика мусора? Как возникают исключения? (Примечание. Предполагается, что это будет вход в FAQ по C++ в Stack Overflow. Если вы хотите критико…
4 ответа

Как написать стандарт ISO C++, соответствующий пользовательским операторам new и delete?

Как написать стандарт ISO C++ new а также delete операторы? Это продолжение перегрузки новых и удаления в чрезвычайно освещенном разделе часто задаваемых вопросов по С ++, перегрузке операторов и ее последующей деятельности. Почему следует заменить…
15 ответов

Может ли шаблон функции-члена класса C++ быть виртуальным?

Я слышал, что шаблоны функций-членов класса C++ не могут быть виртуальными. Это правда? Если они могут быть виртуальными, то каков пример сценария, в котором можно использовать такую ​​функцию?