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

C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.

3
Как этот человек написал «Hello World» с помощью Microsoft Paint?
Я видел это в течение последних нескольких дней и не могу понять, как это работает. Видео, о котором я говорю, находится здесь : Это самый популярный ответ на вопрос о переполнении стека: почему эта программа была отклонена тремя компиляторами? Как это растровое изображение может отображать программу C ++ для "Hello …
99 c++  c  paint 

3
Может ли указатель на базу указывать на массив производных объектов?
Сегодня я пришла на собеседование и мне задали этот интересный вопрос. Помимо утечки памяти и отсутствия виртуального dtor, почему этот код дает сбой? #include <iostream> //besides the obvious mem leak, why does this code crash? class Shape { public: virtual void draw() const = 0; }; class Circle : public …
99 c++  pointers 

7
Почему объекты одного класса имеют доступ к личным данным друг друга?
Почему объекты одного класса имеют доступ к личным данным друг друга? class TrivialClass { public: TrivialClass(const std::string& data) : mData(data) {}; const std::string& getData(const TrivialClass& rhs) const { return rhs.mData; }; private: std::string mData; }; int main() { TrivialClass a("fish"); TrivialClass b("heads"); std::cout << "b via a = " << …

6
Инициализация массива членов в инициализаторе конструктора
class C { public: C() : arr({1,2,3}) //doesn't compile {} /* C() : arr{1,2,3} //doesn't compile either {} */ private: int arr[3]; }; Я считаю, что причина в том, что массивы можно инициализировать только с помощью = синтаксиса, а именно: int arr[3] = {1,3,4}; Вопросы Как я могу делать то, …

5
Почему C ++ требует, чтобы конструктор по умолчанию, предоставляемый пользователем, по умолчанию создавал константный объект?
Стандарт C ++ (раздел 8.5) гласит: Если программа вызывает инициализацию по умолчанию объекта типа T с определением const, T должен быть типом класса с конструктором по умолчанию, предоставляемым пользователем. Зачем? Я не могу придумать ни одной причины, по которой в этом случае требуется пользовательский конструктор. struct B{ B():x(42){} int doSomeStuff() …
99 c++ 

5
Как сделать сборку Visual Studio максимально подробной?
Мне нужно заполучить каждый флаг, каждый переключатель, используемый в процессе сборки двоичными файлами Visual Studio. Я попытался получить подробный вывод с помощью vcbuild, но не смог. Что мне нужно сделать, чтобы увидеть все, что Visual Studio выполняет за меня? Нет необходимости получать результат в окне сборки. Везде было бы хорошо.

4
Зачем нужны лямбда-выражения шаблона, представленные в C ++ 20, если в C ++ 14 уже есть общая лямбда-выражение?
c ++ 14 представили общие лямбды, которые позволили написать следующее: auto func = [](auto a, auto b){ return a + b; }; auto Foo = func(2, 5); auto Bar = func("hello", "world"); Совершенно очевидно, что эта общая лямбда funcработает так же, как и шаблонная функция func. Почему комитет C ++ …


5
Почему для аргумента типа карты C ++ требуется пустой конструктор при использовании []?
См. Также стандартный список C ++ и типы, которые можно построить по умолчанию. Это не серьезная проблема, просто раздражает, поскольку я не хочу, чтобы мой класс когда-либо создавался без определенных аргументов. #include <map> struct MyClass { MyClass(int t); }; int main() { std::map<int, MyClass> myMap; myMap[14] = MyClass(42); } Это …
99 c++  dictionary 


2
Почему shared_ptr <void> законно, а unique_ptr <void> неправильно сформирован?
Вопрос действительно умещается в заголовке: мне любопытно узнать, в чем техническая причина этой разницы, а также ее обоснование? std::shared_ptr&lt;void&gt; sharedToVoid; // legal; std::unique_ptr&lt;void&gt; uniqueToVoid; // ill-formed;

14
Как написать базу журнала (2) на c / c ++
Есть ли способ записать функцию журнала (база 2)? Язык C имеет 2 встроенных функции - &gt;&gt; 1. logкоторый является основанием e. 2. log10база 10; Но мне нужна функция журнала базы 2, как это вычислить.
99 c++  c 

4
Как реализован std :: function?
Согласно источникам, которые я нашел, лямбда-выражение по существу реализуется компилятором, создающим класс с перегруженным оператором вызова функции и ссылочными переменными в качестве членов. Это говорит о том, что размер лямбда-выражений варьируется, и при наличии достаточного количества ссылочных переменных размер может быть сколь угодно большим . Объект std::functionдолжен иметь фиксированный размер …
99 c++  c++11  lambda 


3
Как правильно проверить, пусто ли std :: function в C ++ 11?
Мне было интересно, как правильно проверить std::function, пуст ли. Рассмотрим этот пример: class Test { std::function&lt;void(int a)&gt; eventFunc; void registerEvent(std::function&lt;void(int a)&gt; e) { eventFunc = e; } void doSomething() { ... eventFunc(42); } }; Этот код отлично компилируется в MSVC, но если я позвоню doSomething()без инициализации, eventFuncкод явно выйдет из …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.