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

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

7
Могу ли я вызвать виртуальную функцию базового класса, если переопределяю ее?
Скажем, у меня есть классы Fooи Barнастроены так: class Foo { public: int x; virtual void printStuff() { std::cout << x << std::endl; } }; class Bar : public Foo { public: int y; void printStuff() { // I would like to call Foo.printStuff() here... std::cout << y << std::endl; …

22
Определить, перекрывают ли два прямоугольника друг друга?
Я пытаюсь написать программу на C ++, которая использует следующие входные данные от пользователя для построения прямоугольников (между 2 и 5): высота, ширина, x-pos, y-pos. Все эти прямоугольники будут существовать параллельно осям x и y, то есть все их ребра будут иметь наклон 0 или бесконечность. Я пытался реализовать то, …

14
Почему C ++ не имеет отражения?
Это несколько странный вопрос. Мои цели - понять решение по проектированию языка и определить возможности отражения в C ++. Почему комитет по языку C ++ не пошел на реализацию рефлексии на языке? Является ли отражение слишком сложным в языке, который не работает на виртуальной машине (например, Java)? Если кто-то реализует …
337 c++  reflection 

14
Когда следует использовать возможность constexpr в C ++ 11?
Мне кажется, что наличие «функции, которая всегда возвращает 5» нарушает или ослабляет значение «вызова функции». Должна быть причина, или необходимость в этой возможности, иначе ее не будет в C ++ 11. Почему это там? // preprocessor. #define MEANING_OF_LIFE 42 // constants: const int MeaningOfLife = 42; // constexpr-function: constexpr int …
337 c++  c++11  constexpr 


5
Как использовать основанный на диапазоне цикл for () с std :: map?
Типичный пример циклов for (), основанных на диапазоне C ++ 11, всегда выглядит примерно так: std::vector<int> numbers = { 1, 2, 3, 4, 5, 6, 7 }; for ( auto xyz : numbers ) { std::cout << xyz << std::endl; } В каком случае xyzэто int. Но что происходит, когда …

17
std :: string to char *
Я хочу преобразовать std :: string в тип данных char * или char [] . std::string str = "string"; char* chr = str; Результат: «ошибка: невозможно преобразовать« std :: string »в« char »...» . Какие методы доступны для этого?
335 c++  string  char 

20
int a [] = {1,2,}; Странная запятая разрешена. Любая конкретная причина?
Возможно, я не с этой планеты, но мне кажется, что синтаксическая ошибка должна быть следующей: int a[] = {1,2,}; //extra comma in the end Но это не так. Я был удивлен , когда этот код скомпилирован на Visual Studio, но я научился не доверять MSVC компилятор, насколько правила C ++ …

5
Для чего нужны встроенные пространства имен?
C ++ 11 допускает inline namespaces, все члены которых также автоматически включаются в корпус namespace. Я не могу придумать какое-либо полезное применение этого - может ли кто-нибудь дать краткий, краткий пример ситуации, когда inline namespaceнужен и где это самое идиоматическое решение? (Кроме того, мне не ясно, что происходит, когда a …

11
Как вывести двойное значение с полной точностью, используя cout?
Итак, я получил ответ на мой последний вопрос (я не знаю, почему я не подумал об этом). Я печатал doubleиспользование, coutкоторое округлилось, когда я не ожидал этого. Как я могу сделать coutпечать с doubleиспользованием полной точности?

2
Как реализовать классические алгоритмы сортировки в современном C ++?
std::sortАлгоритм (и его кузены std::partial_sortи std::nth_element) из стандартной библиотеки C ++ в большинстве реализаций сложный и гибридная объединение более элементарных алгоритмов сортировки , таких как выбор сортировки, вставки сортировка, быстрая сортировка, сортировка слиянием, или кучи сортировки. Здесь и на родственных сайтах, таких как https://codereview.stackexchange.com/, есть много вопросов, связанных с ошибками, …


3
Является ли 0 десятичным или восьмеричным литералом?
Ноль всегда равен нулю, поэтому это не имеет значения. Но в недавней беседе с другом он сказал, что восьмеричные литералы сегодня почти не используются. † Затем до меня дошло, что на самом деле почти все целочисленные литералы в моем коде являются восьмеричными, а именно 0. Является 0ли восьмеричный литерал в …
329 c++  zero  octal 

10
Как правильно реализовать шаблон фабричного метода в C ++
В C ++ есть одна вещь, которая заставляет меня чувствовать себя некомфортно в течение достаточно долгого времени, потому что я, честно говоря, не знаю, как это сделать, хотя это звучит просто: Как правильно реализовать Factory Method в C ++? Цель: позволить клиенту создавать экземпляры некоторого объекта, используя фабричные методы вместо …

22
Является ли неинициализированная локальная переменная самым быстрым генератором случайных чисел?
Я знаю, что неинициализированная локальная переменная - это неопределенное поведение ( UB ), а также у значения могут быть представления ловушек, которые могут повлиять на дальнейшие операции, но иногда я хочу использовать случайное число только для визуального представления и больше не буду использовать их в другой части Программа, например, установить …

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