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

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

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

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

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

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

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

8
голоса
5
ответов
6
просмотров
Что означает 'const' в конце объявления метода класса?

Вопрос: Каково значение const в таких объявлениях?

У меня есть следующий фрагмент кода на C++:

class foobar
{
  public:
     operator int () const;
     const char* foo() const;
};

Я не совсем понимаю, какое значение имеет const в этих объявлениях. Что конкретно означает...

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

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

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

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

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

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

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

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

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

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

#include 

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

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

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

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

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

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

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

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

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

В...

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

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

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

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

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

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

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

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

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

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

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

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

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

extern "C" { void foo(); }

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

7
голоса
5
ответов
0
просмотров
В чем разница между параметрами шаблона "typename" и "class"?

У меня возникли вопросы по поводу использования шаблонов в C++. Я заметил, что в объявлениях шаблонов используются два различных синтаксиса:

template 
template 

В чем разница между ними?

Кроме того, в приведенном ниже примере (из статьи на немецком Wikipedia о шаблонах) я хотел бы...

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

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

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

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

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

typedef int MyInt;

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

using MyInt = int;

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

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

Проблема

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

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

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

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

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

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

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