Вопросы с тегом «c++-faq»

Предоставляет совместный, отредактированный сообществом C ++ FAQ

16
Является ли практика возврата ссылочной переменной C ++ злой?
Это немного субъективно, я думаю; Я не уверен, что мнение будет единодушным (я видел много фрагментов кода, где возвращаются ссылки). В соответствии с комментарием к этому вопросу, который я только что спросил, относительно инициализации ссылок , возврат ссылки может быть злым, потому что, [насколько я понимаю], легче пропустить его удаление, …
341 c++  reference  c++-faq 


2
Как реализовать классические алгоритмы сортировки в современном C ++?
std::sortАлгоритм (и его кузены std::partial_sortи std::nth_element) из стандартной библиотеки C ++ в большинстве реализаций сложный и гибридная объединение более элементарных алгоритмов сортировки , таких как выбор сортировки, вставки сортировка, быстрая сортировка, сортировка слиянием, или кучи сортировки. Здесь и на родственных сайтах, таких как https://codereview.stackexchange.com/, есть много вопросов, связанных с ошибками, …

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

20
Почему я всегда должен включать предупреждения компилятора?
Я часто слышу, что при компиляции программ на C и C ++ я должен «всегда включать предупреждения компилятора». Почему это необходимо? Как я могу это сделать? Иногда я также слышу, что я должен «воспринимать предупреждения как ошибки». Нужно ли мне? Как я могу это сделать?


13
Когда полезен std :: weak_ptr?
Я начал изучать умные указатели C ++ 11, и я не вижу никакого полезного использования std::weak_ptr. Может кто-нибудь сказать мне, когда std::weak_ptrэто полезно / необходимо?

4
Почему я не должен включать #include <bits / stdc ++. H>?
Я отправил вопрос со своим кодом, единственной #includeдирективой которого было следующее: #include &lt;bits/stdc++.h&gt; Мой учитель сказал мне сделать это, но в разделе комментариев мне сообщили, что я не должен. Зачем?

3
Порядок оценки списка инициализации конструктора
У меня есть конструктор, который принимает некоторые аргументы. Я предполагал, что они были построены в указанном порядке, но в одном случае кажется, что они были построены в обратном порядке, что привело к прерыванию. Когда я изменил аргументы, программа перестала прерываться. Это пример синтаксиса, который я использую. Дело в том, что …
252 c++  gcc  c++-faq 

7
Как передать объекты в функции в C ++?
Я новичок в программировании на C ++, но у меня есть опыт работы с Java. Мне нужно руководство о том, как передавать объекты в функции в C ++. Нужно ли передавать указатели, ссылки или не указатели и не ссылки? Я помню, в Java нет таких проблем, поскольку мы передаем только …

4
Когда я использую точку, стрелку или двойное двоеточие для ссылки на члены класса в C ++?
Исходя из других языков C происхождения (например , Java или C #) на C ++, то в первую очень запутанные , что C ++ имеет три способа обратиться к членам класса: a::b, a.b, и a-&gt;b. Когда я использую какой из этих операторов? (Примечание. Предполагается, что это будет вход в FAQ …
243 c++  c++-faq 

14
Указатель на элемент данных класса «:: *»
Я наткнулся на этот странный фрагмент кода, который прекрасно компилируется: class Car { public: int speed; }; int main() { int Car::*pSpeed = &amp;Car::speed; return 0; } Почему C ++ имеет этот указатель на нестатический член данных класса? Какая польза от этого странного указателя в реальном коде?
243 c++  class  pointers  c++-faq 

19
Как удалить дублирование кода между похожими константными и неконстантными функциями-членами?
Допустим, у меня есть следующее, class Xгде я хочу вернуть доступ к внутреннему члену: class Z { // details }; class X { std::vector&lt;Z&gt; vecZ; public: Z&amp; Z(size_t index) { // massive amounts of code for validating index Z&amp; ret = vecZ[index]; // even more code for determining that the …

1
Какова цель std :: launder?
P0137 представляет шаблон функции std::launderи вносит множество изменений в стандарт в разделах, касающихся объединений, времени жизни и указателей. Какую проблему решает эта статья? Какие изменения в языке я должен знать? И что мы думаем launder?

3
Что такое «rvalue reference для * this»?
На странице статуса C ++ 11 в Clang наткнулся на предложение под названием «ссылка на rvalue для * this» . Я прочитал довольно много о ссылках на rvalue и понял их, но я не думаю, что знаю об этом. Я также не мог найти много ресурсов в Интернете, используя термины. …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.