c++-faq- все статьи тега


Почему" использование пространства имен std " считается плохой практикой?

Мне говорили, что писать using namespace std в коде неправильно, и что я должен использовать std::cout и std::cin непосредственно вместо этого. Почему using namespace std считается плохой практикой? Это неэффективно или рискует объявить неоднозначные переменные (переменные, которые имеют то же имя, что и функция в пространстве имен std)? Влияет ли это на производительность? ...

Когда следует использовать статическое литье, динамическое литье, const cast и reinterpret cast?

как правильно использовать: static_cast dynamic_cast const_cast reinterpret_cast C-style cast (type)value функция-стиль cast type(value) как решить, что использовать, в каких конкретных случаях? ...

Что такое правило трех?

что значит копирование объекта В смысле? что такое конструктор копирования и оператор присваивания копии? когда я должен объявить их сам? Как я могу предотвратить копирование моих объектов? ...

Что такое лямбда-выражения в C++11?

Что такое лямбда-выражения в C++11? Когда я буду его использовать? Какой класс проблем они решают, что было невозможно до их введения? несколько примеров, и варианты использования были бы полезны. ...

Зачем использовать явно бессмысленные операторы do-while и if-else в макросах?

во многих макросах C / C++ я вижу код макроса, завернутый в то, что кажется бессмысленным do while петли. Вот примеры. #define FOO(X) do { f(X); g(X); } while (0) #define FOO(X) if (1) { f(X); g(X); } else Я не вижу, что за do while делает. Почему бы просто не написать это без него? #define FOO(X) f(X); g(X) ...

Что означает T&& (двойной амперсанд) в C++11?

Я изучал некоторые из новых функций C++11, и я заметил, что это двойной амперсанд в объявлении переменных, например T&& var. для начала, как называется этот зверь? Я хотел бы, чтобы Google позволил нам искать знаки препинания, как это. что это в смысле? на первый взгляд, это похоже на двойную ссылку (например, двойные указатели C-стиля T** var), но мне трудно думать об использовании дело за этим. ...

Почему sizeof для структуры не равен сумме sizeof каждого члена?

почему sizeof оператор возвращает размер больше для структуры, чем общие размеры элементов структуры? ...

Неопределенное, неопределенное и определяемое реализацией поведение

в чем разница между неопределенным, неопределенным и определяемым реализацией поведением в C и c++? ...

Как использовать массивы в C++?

в C++ массивы в наследство от C, где они используются практически везде. C++ предоставляет абстракции, которые проще в использовании и менее подвержены ошибкам (std::vector<T> начиная с C++98 и std::array<T, n> С C++11), поэтому необходимость в массивах возникает не так часто, как в C. Однако, когда вы читаете устаревший код или взаимодействуете с библиотекой, написанной на C, вы должны иметь четкое представление о том, как работают массивы. этот FAQ разделен на пять части: массив ...

Итератор правила о признании недействительными

каковы правила недействительности итератора для контейнеров C++? желательно в формате сводного списка. (Примечание:это должно быть запись в C++ FAQ Stack Overflow. Если вы хотите критиковать идею предоставления FAQ в этой форме, то публикация на meta, которая начала все это было бы место, чтобы сделать это. Ответы на этот вопрос отслеживаются в в C++ чат, где идея FAQ началась в во-первых, поэтому ваш ответ, скорее всего, будет прочитан теми, кто придумал эту идею.) ...

В чем разница между "STL" и "стандартной библиотекой C++"?

кто-то принес в этой статье к моему вниманию, что утверждает (я перефразирую) термин STL неправильно используется для обозначения всей стандартной библиотеки C++ вместо частей, которые были взяты из SGI STL. (...) это относится к "STL", несмотря на то, что очень мало людей все еще используют STL (который был разработан в SGI). части стандартной библиотеки C++ были основаны на частях STL, и именно эти части многие люди (в том числе несколько авторов и заведомо ошибочных cplusplus.com) по ...

Как передать объекты в функции в C++?

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

Какой указатель я использую, когда?

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

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

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

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

с новым стандартом есть новые способы делать вещи, и многие из них лучше, чем старые способы, но старый способ все еще прекрасен. Также ясно, что новый стандарт официально не очень устарел по причинам обратной совместимости. Так что вопрос остается: какие старые способы кодирования определенно уступают стилям C++11, и что мы теперь можем сделать вместо этого? отвечая на это, вы можете пропустить такие очевидные вещи как "авто переменные параметры." ...

Почему существует volatile?

что значит volatile ключевое слово do? В C++ какую проблему он решает? в моем случае, я никогда не нуждался в нем. ...

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

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

Конструктор по умолчанию с пустыми скобками

есть ли веская причина, по которой пустой набор круглых скобок (скобок) недопустим для вызова конструктора по умолчанию в C++? MyObject object; // ok - default ctor MyObject object(blah); // ok MyObject object(); // error Я, кажется, набираю "() " автоматически каждый раз. Есть ли веская причина, по которой это запрещено? ...

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

как показано в ответ Я недавно опубликовал, я, кажется, смущен полезностью (или ее отсутствием)volatile в многопоточных контекстах программирования. мое понимание таково: каждый раз, когда переменная может быть изменена вне потока управления куска кода доступа к ней, что переменная должна быть объявлена volatile. Обработчики сигналов, регистры ввода-вывода и переменные, модифицированные другим потоком, все составляют такие положения. Итак, если у вас есть глобальный int foo и foo считывается ...

Что такое " Поиск, зависящий от аргумента "(он же ADL или"поиск Кенига")?

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