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

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


7
Добавить пользовательские сообщения в assert?
Есть ли способ добавить или отредактировать сообщение, созданное assert? Я бы хотел использовать что-то вроде assert(a == b, "A must be equal to B"); Затем компилятор добавляет строку , время и так далее ... Является ли это возможным?
130 c++  assert 


10
Передача ссылок на указатели в C ++
Насколько я могу судить, нет никаких причин, по которым мне нельзя разрешать передавать ссылку на указатель в C ++. Однако мои попытки сделать это терпят неудачу, и я не знаю почему. Вот что я делаю: void myfunc(string*& val) { // Do stuff to the string pointer } // sometime later …
130 c++  pointers  reference 


29
Общие рекомендации по предотвращению утечек памяти в C ++ [закрыто]
В его нынешнем виде этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, повлечет за собой дебаты, аргументы, опросы или расширенное обсуждение. Если вы считаете, что этот вопрос можно улучшить и, возможно, снова открыть, …

14
Почему указатели на функции и указатели данных несовместимы в C / C ++?
Я читал, что преобразование указателя функции в указатель данных и наоборот работает на большинстве платформ, но не гарантируется. Почему это так? Разве оба не должны быть просто адресами в основной памяти и, следовательно, быть совместимыми?


5
Перегрузка операторов доступа к членам ->,. *
Я понимаю , большинство перегрузки операторов, за исключением операторов доступа члена ->, .*, и ->*т.д. В частности, что передается этим операторным функциям, а что нужно возвращать? Как операторная функция (например operator->(...)) узнает, на какой член ссылается? Это может знать? Это вообще нужно знать? Наконец, нужно ли учитывать какие-либо константы? Например, …

4
std :: function и std :: bind: что это такое и когда их следует использовать?
Я знаю, что такое функторы и когда их использовать с stdалгоритмами, но я не понял, что Страуструп говорит о них в FAQ по C ++ 11 . Может ли кто-нибудь объяснить, что std::bindи std::functionесть, когда их следует использовать, и привести несколько примеров для новичков?

6
Почему целочисленное переполнение на x86 с GCC вызывает бесконечный цикл?
Следующий код переходит в бесконечный цикл GCC: #include <iostream> using namespace std; int main(){ int i = 0x10000000; int c = 0; do{ c++; i += i; cout << i << endl; }while (i > 0); cout << c << endl; return 0; } Итак, дело в следующем: подписанное целочисленное …
129 c++  c  gcc  x86  undefined-behavior 

6
Почему std :: shared_ptr <void> работает
Я нашел код с использованием std :: shared_ptr для произвольной очистки при завершении работы. Сначала я подумал, что этот код не может работать, но потом попробовал следующее: #include &lt;memory&gt; #include &lt;iostream&gt; #include &lt;vector&gt; class test { public: test() { std::cout &lt;&lt; "Test created" &lt;&lt; std::endl; } ~test() { std::cout &lt;&lt; …
129 c++  c++11  shared-ptr 

5
Неразрешенный внешний символ для статических членов класса
Проще говоря: У меня есть класс, который состоит в основном из статических общедоступных членов, поэтому я могу сгруппировать вместе похожие функции, которые по-прежнему необходимо вызывать из других классов / функций. В любом случае, я определил две статические переменные типа unsigned char в своей публичной области видимости класса, когда я пытаюсь …
129 c++  class  static  members 

5
Доступ к неактивному члену союза и неопределенному поведению?
У меня создалось впечатление, что доступ к unionчлену, отличному от последнего набора, - это UB, но я не могу найти надежную ссылку (кроме ответов, в которых утверждается, что это UB, но без какой-либо поддержки со стороны стандарта). Итак, это неопределенное поведение?

9
Когда и почему компилятор инициализирует память до 0xCD, 0xDD и т. Д. В malloc / free / new / delete?
Я знаю, что компилятор иногда инициализирует память определенными шаблонами, такими как 0xCDи 0xDD. Я хочу знать, когда и почему это происходит. когда Это специфично для используемого компилятора? Так поступают malloc/newи free/deleteработают в этом отношении? Это зависит от платформы? Произойдет ли это в других операционных системах, например Linuxили VxWorks? Зачем Насколько …

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