c++ ×42
Создан 03.01.2025
9
голоса
5
ответов
6
просмотров
`std::wstring` против `std::string`: когда использовать и в чем разница?

Я не могу понять различия между std::string и std::wstring. Я знаю, что std::wstring поддерживает широкие символы, такие как символы Unicode. У меня есть следующие вопросы:

  1. Когда следует использовать std::wstring вместо std::string?
  2. Может ли std::string содержать весь набор...
8
голоса
5
ответов
8
просмотров
Сон на миллисекунды

Я знаю, что функция POSIX sleep(x) заставляет программу засыпать на x секунд. Есть ли функция, которая позволяет заставить программу засыпать на x миллисекунд в C++?

8
голоса
5
ответов
11
просмотров
Что такое "кэш-дружественный" код?

Какова разница между "кодом, не дружелюбным к кэшу" и "дружелюбным к кэшу" кодом?

Как я могу убедиться, что пишу эффективный с точки зрения кэширования код?

8
голоса
5
ответов
6
просмотров
В чем разница между constexpr и const?

Заголовок: В чём разница между constexpr и const в C++?

Тело вопроса:

Я пытаюсь разобраться в различиях между constexpr и const в C++. У меня есть несколько вопросов по этой теме:

  1. Когда я могу использовать только одно из этих ключевых слов?
  2. В каких ситуациях я могу использовать...
10
голоса
4
ответов
13
просмотров
Как преобразовать std::string в const char* или char*

Как я могу преобразовать std::string в char* или const char*?

11
голоса
5
ответов
7
просмотров
Можно ли получить доступ к памяти локальной переменной вне её области видимости?

У меня есть следующий код:

#include 

int * foo()
{
    int a = 5;
    return &a;
}

int main()
{
    int* p = foo();
    std::cout << *p;
    *p = 8;
    std::cout << *p;
}

Код выполняется без каких-либо исключений во время выполнения! Вывод был 58.

Как это возможно? Разве память...

8
голоса
5
ответов
4
просмотров
Что такое ошибка сегментации?

Что такое ошибка сегментации? Есть ли разница между языками C и C++ в этом контексте? Как ошибки сегментации связаны с висячими указателями?

19
голоса
5
ответов
7
просмотров
Когда использовать виртуальные деструкторы?

У меня есть хорошее понимание большинства теорий объектно-ориентированного программирования (OOP), но один момент, который меня сильно пугает, — это виртуальные деструкторы.

Я полагал, что деструктор всегда вызывается, вне зависимости от ситуации, и для каждого объекта в иерархии классов.

В...

11
голоса
5
ответов
17
просмотров
Имеют ли круглые скобки после имени типа значение при использовании new?

Заголовок: Разница между созданием экземпляров класса в C++: new Test и new Test()

Текст проблемы:

Я изучаю C++ и столкнулся с вопросом о различиях между двумя способами создания экземпляра класса. Если Test является обычным классом, есть ли какая-либо разница между следующими строками...

11
голоса
4
ответов
14
просмотров
Что такое std::move() и когда его следует использовать?

Проблема: Необходимость в разъяснении функциональности и применения технологии

  1. Что это?
    Я столкнулся с [название технологии или инструмента], и мне не совсем ясно, что это такое и какие его основные характеристики.

  2. Что он делает?
    Хотел бы получить ясное объяснение...

9
голоса
5
ответов
6
просмотров
Как реализовать паттерн проектирования Singleton?

Недавно я столкнулся с реализацией шаблона проектирования Singleton для C++. Вот как это выглядит (я адаптировал это из примера из реальной жизни):

// здесь опущено множество методов
class Singleton
{
   public:
       static Singleton* getInstance();
       ~Singleton();
   private:
      ...
21
голоса
5
ответов
10
просмотров
Каково влияние extern "C" в C++?

Проблема заключается в том, что неясно, какую роль играет конструкция extern "C" в коде на C++.

Например, я могу привести следующий фрагмент кода:

extern "C" { void foo(); }

Ожидается, что ответ на вопрос о том, что делает эта конструкция, поможет мне лучше понять, как интерфейсы C и C++...

13
голоса
2
ответов
13
просмотров
Где и зачем нужно использовать ключевые слова "template" и "typename"?

В шаблонах, где и почему мне нужно указывать typename и template для зависимых имен? Что такое зависимые имена?

У меня есть следующий код:

template  // Tail тоже будет UnionNode.
struct UnionNode : public Tail {
    // ...
    template  struct inUnion {
        // Вопрос: где нужно...
12
голоса
5
ответов
14
просмотров
Какова разница между 'typedef' и 'using'?

Я знаю, что в C++11 мы можем использовать ключевое слово using для написания псевдонимов типов, аналогично typedef. Например:

typedef int MyInt;

Что, как я понимаю, эквивалентно:

using MyInt = int;

Эта новая синтаксическая конструкция появилась в рамках попытки создать способ для выражения...

9
голоса
0
ответов
16
просмотров
Новые возможности C++17: что стоит знать?

Проблема

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

Я использую компилятор C++, который поддерживает "C++1z". Могу ли я узнать, какие из...

11
голоса
5
ответов
13
просмотров
Почему переменные нельзя объявлять в операторе switch?

У меня всегда возникал вопрос: почему нельзя объявлять переменные после метки case в операторе switch? В C++ можно объявлять переменные практически в любом месте (причём объявление их ближе к первому использованию, безусловно, является хорошей практикой), но следующий код всё равно не...

17
голоса
0
ответов
8
просмотров
Что такое лямбда-выражение и когда его следует использовать?

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

Несколько примеров и областей применения были бы полезны.

16
голоса
2
ответов
9
просмотров
Почему замена 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,
          ...
12
голоса
5
ответов
9
просмотров
Как использовать extern для обмена переменными между исходными файлами?

Я знаю, что глобальные переменные в C иногда имеют ключевое слово extern. Что такое переменная extern? Каково её объявление? Каков её диапазон видимости?

Это связано с обменом переменными между исходными файлами, но как именно это работает? Где мне использовать extern?

9
голоса
4
ответов
12
просмотров
Разница между 'struct' и 'typedef struct' в C++?

В C++ есть ли разница между следующими определениями:

struct Foo ;

и:

typedef struct Foo;

Дело в том, что оба варианта, похоже, создают тип с именем Foo, но могут ли они иметь какие-либо различия в функциональности или использовании? Является ли использование typedef...