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

238
Что такое «промежуток» и когда я должен его использовать?

Недавно я получил предложения использовать span<T>их в своем коде или увидел здесь некоторые ответы на сайте, которые используют span- предположительно, какой-то контейнер. Но - я не могу найти ничего подобного в стандартной библиотеке C ++ 17. Так что же это за таинственное span<T>и...

228
Какой тип указателя мне использовать, когда?

Итак, в прошлый раз, когда я писал на С ++, std::auto_ptrвсе, что было доступно в std lib, boost::shared_ptrбыло в ярости. Я действительно никогда не смотрел на другие типы улучшенных умных указателей. Я понимаю, что C ++ 11 теперь предоставляет некоторые из типов boost, но не все. Так есть ли у...

226
Почему неконстантная ссылка не может привязываться к временному объекту?

Почему нельзя получить неконстантную ссылку на временный объект, который getx()возвращает функция ? Понятно, что это запрещено C ++ Standard, но меня интересует цель такого ограничения, а не ссылка на стандарт. struct X { X& ref() { return *this; } }; X getx() { return X();} void g(X & x)...

214
Что такое оператор <=> в C ++?

В то время как я пытался узнать о C ++ операторов, я наткнулся на операторе странного сравнения на cppreference.com , * в таблице , которая выглядит следующим образом : «Ну, если это обычные операторы в C ++, я лучше их изучу», - подумал я. Но все мои попытки выяснить эту тайну оказались...

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

Трудно сказать, что здесь спрашивают. Этот вопрос является двусмысленным, расплывчатым, неполным, чрезмерно широким или риторическим, и на него нельзя дать разумный ответ в его нынешней форме. Чтобы получить разъяснения по этому вопросу, чтобы его можно было снова открыть, посетите справочный...

199
Почему я должен получить доступ к членам базового класса шаблона через указатель this?

Если бы приведенные ниже классы не были шаблонами, я мог бы просто иметь их xв derivedклассе. Тем не менее, с кодом ниже, я должен использовать this->x. Зачем? template <typename T> class base { protected: int x; }; template <typename T> class derived : public base<T> { public:...

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

В последнее время я пытался изучить C ++ с этого сайта . К сожалению, всякий раз, когда я пытаюсь запустить один из примеров кода, я вижу, что программа открывается примерно на полсекунды, а затем сразу же закрывается. Есть ли способ остановить немедленное закрытие программы, чтобы я мог видеть...

192
Какие идиомы C ++ устарели в C ++ 11?

С новым стандартом появляются новые способы ведения дел, и многие из них более хороши, чем старые, но старый способ все еще в порядке. Также ясно, что новый стандарт официально не очень устарел по причинам обратной совместимости. Итак, вопрос, который остается: Какие старые способы кодирования...

183
Почему «это» указатель, а не ссылка?

Я читал ответы на этот вопрос плюсы и минусы C ++ и получил это сомнение, читая комментарии. Программисты часто путают, что «это» - указатель, а не ссылка. Другая путаница заключается в том, что «hello» не относится к типу std :: string, а вычисляется как char const * (указатель) (после...

179
Является ли идиома safe-bool устаревшей в C ++ 11?

Этот ответ @R. Мартиньо Фернандес показывает, что идиома безопасного булла в C ++ 11 явно устарела, так как ее можно заменить простым explicit operator bool() const; согласно стандартной цитате в ответе §4 [conv] p3: Выражение e может быть неявно преобразовано в тип Tтогда и только тогда, когда...

177
Что такое «Аргумент-зависимый поиск» (он же ADL или «Поиск Кенига»)?

Каковы хорошие объяснения того, что поиск зависит от аргумента? Многие также называют это Koenig Lookup. Желательно, чтобы я знал: Почему это хорошо? Почему это плохо? Как это работает?...

165
Почему volatile не считается полезным в многопоточном программировании на C или C ++?

Как показано в этом ответе, который я недавно опубликовал, мне кажется, что я не совсем понимаю полезность (или ее отсутствие) volatileмногопоточного программирования. Насколько я понимаю, в любой момент, когда переменная может быть изменена вне потока контроля фрагмента кода, обращающегося к ней,...

163
Каковы преимущества использования nullptr?

Этот фрагмент кода концептуально делает то же самое для трех указателей (безопасная инициализация указателя): int* p1 = nullptr; int* p2 = NULL; int* p3 = 0; Итак, каковы преимущества назначения указателей nullptrперед присвоением им значений NULLили...

147
Что такое правильное объявление основного?

Какова правильная подпись mainфункции в C ++? Каков правильный тип возвращаемого значения и что означает возвращать значение main? Каковы допустимые типы параметров и каковы их значения? Это зависит от системы? Изменились ли эти правила с течением времени? Что произойдет, если я нарушу...

144
Какие манипуляторы иоманипов являются «липкими»?

Недавно у меня возникла проблема с созданием stringstreamиз-за того, что я ошибочно предположил, std::setw()что это повлияет на поток строк при каждой вставке, пока я не изменил его явно. Однако после вставки он всегда сбрасывается. // With timestruct with value of 'Oct 7 9:04 AM'...

135
Как я могу эффективно выбрать контейнер стандартной библиотеки в C ++ 11?

Есть хорошо известное изображение (шпаргалка) под названием «Выбор контейнера C ++». Это блок-схема, чтобы выбрать лучший контейнер для желаемого использования. Кто-нибудь знает, есть ли уже версия на C ++ 11? Это предыдущий:...