Вопросы
`std::wstring` против `std::string`: когда использовать и в чем разница?
Я не могу понять различия между std::string
и std::wstring
. Я знаю, что std::wstring
поддерживает широкие символы, такие как символы Unicode. У меня есть следующие вопросы:
- Когда следует использовать
std::wstring
вместоstd::string
? - Может ли
std::string
содержать весь набор...
Сон на миллисекунды
Я знаю, что функция POSIX sleep(x) заставляет программу засыпать на x секунд. Есть ли функция, которая позволяет заставить программу засыпать на x миллисекунд в C++?
Что такое "кэш-дружественный" код?
Какова разница между "кодом, не дружелюбным к кэшу" и "дружелюбным к кэшу" кодом?
Как я могу убедиться, что пишу эффективный с точки зрения кэширования код?
В чем разница между constexpr и const?
Заголовок: В чём разница между constexpr
и const
в C++?
Тело вопроса:
Я пытаюсь разобраться в различиях между constexpr
и const
в C++. У меня есть несколько вопросов по этой теме:
- Когда я могу использовать только одно из этих ключевых слов?
- В каких ситуациях я могу использовать...
Как преобразовать std::string в const char* или char*
Как я могу преобразовать std::string в char* или const char*?
Можно ли получить доступ к памяти локальной переменной вне её области видимости?
У меня есть следующий код:
#include
int * foo()
{
int a = 5;
return &a;
}
int main()
{
int* p = foo();
std::cout << *p;
*p = 8;
std::cout << *p;
}
Код выполняется без каких-либо исключений во время выполнения! Вывод был 58
.
Как это возможно? Разве память...
Что такое ошибка сегментации?
Что такое ошибка сегментации? Есть ли разница между языками C и C++ в этом контексте? Как ошибки сегментации связаны с висячими указателями?
Когда использовать виртуальные деструкторы?
У меня есть хорошее понимание большинства теорий объектно-ориентированного программирования (OOP), но один момент, который меня сильно пугает, — это виртуальные деструкторы.
Я полагал, что деструктор всегда вызывается, вне зависимости от ситуации, и для каждого объекта в иерархии классов.
В...
Имеют ли круглые скобки после имени типа значение при использовании new?
Заголовок: Разница между созданием экземпляров класса в C++: new Test
и new Test()
Текст проблемы:
Я изучаю C++ и столкнулся с вопросом о различиях между двумя способами создания экземпляра класса. Если Test
является обычным классом, есть ли какая-либо разница между следующими строками...
Что такое std::move() и когда его следует использовать?
Проблема: Необходимость в разъяснении функциональности и применения технологии
Что это?
Я столкнулся с [название технологии или инструмента], и мне не совсем ясно, что это такое и какие его основные характеристики.Что он делает?
Хотел бы получить ясное объяснение...
Как реализовать паттерн проектирования Singleton?
Недавно я столкнулся с реализацией шаблона проектирования Singleton для C++. Вот как это выглядит (я адаптировал это из примера из реальной жизни):
// здесь опущено множество методов
class Singleton
{
public:
static Singleton* getInstance();
~Singleton();
private:
...
Каково влияние extern "C" в C++?
Проблема заключается в том, что неясно, какую роль играет конструкция extern "C"
в коде на C++.
Например, я могу привести следующий фрагмент кода:
extern "C" { void foo(); }
Ожидается, что ответ на вопрос о том, что делает эта конструкция, поможет мне лучше понять, как интерфейсы C и C++...
Где и зачем нужно использовать ключевые слова "template" и "typename"?
В шаблонах, где и почему мне нужно указывать typename и template для зависимых имен? Что такое зависимые имена?
У меня есть следующий код:
template // Tail тоже будет UnionNode.
struct UnionNode : public Tail {
// ...
template struct inUnion {
// Вопрос: где нужно...
Какова разница между 'typedef' и 'using'?
Я знаю, что в C++11 мы можем использовать ключевое слово using для написания псевдонимов типов, аналогично typedef. Например:
typedef int MyInt;
Что, как я понимаю, эквивалентно:
using MyInt = int;
Эта новая синтаксическая конструкция появилась в рамках попытки создать способ для выражения...
Новые возможности C++17: что стоит знать?
Проблема
C17 теперь является завершённым, и в него было предложено множество новых возможностей. В связи с этим у меня возник следующий вопрос: какие именно функции были добавлены в C в версии C++17?
Я использую компилятор C++, который поддерживает "C++1z". Могу ли я узнать, какие из...
Почему переменные нельзя объявлять в операторе switch?
У меня всегда возникал вопрос: почему нельзя объявлять переменные после метки case в операторе switch? В C++ можно объявлять переменные практически в любом месте (причём объявление их ближе к первому использованию, безусловно, является хорошей практикой), но следующий код всё равно не...
Что такое лямбда-выражение и когда его следует использовать?
Вопрос: Что такое лямбда-выражение в C++11? В каких ситуациях я мог бы его использовать? Какие классы задач они решают, что было невозможно до их введения?
Несколько примеров и областей применения были бы полезны.
Почему замена 0.1f на 0 замедляет производительность в 10 раз?
Проблема:
Почему следующий участок кода:
const float x[16] = { 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8,
1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6};
const float z[16] = {1.123, 1.234, 1.345, 156.467, 1.578, 1.689, 1.790, 1.812,
...
Как использовать extern для обмена переменными между исходными файлами?
Я знаю, что глобальные переменные в C иногда имеют ключевое слово extern. Что такое переменная extern? Каково её объявление? Каков её диапазон видимости?
Это связано с обменом переменными между исходными файлами, но как именно это работает? Где мне использовать extern?
Разница между 'struct' и 'typedef struct' в C++?
В C++ есть ли разница между следующими определениями:
struct Foo ;
и:
typedef struct Foo;
Дело в том, что оба варианта, похоже, создают тип с именем Foo
, но могут ли они иметь какие-либо различия в функциональности или использовании? Является ли использование typedef
...