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

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


6
Неиспользуемая переменная-член занимает память?
Инициализация переменной-члена, а не обращение к ней / ее использование, дополнительно занимает оперативную память во время выполнения, или компилятор просто игнорирует эту переменную? struct Foo { int var1; int var2; Foo() { var1 = 5; std::cout << var1; } }; В приведенном выше примере член var1 получает значение, которое затем …
92 c++  memory  struct 

4
Почему (только) некоторые компиляторы используют один и тот же адрес для одинаковых строковых литералов?
https://godbolt.org/z/cyBiWY Я вижу два 'some'литерала в коде ассемблера, сгенерированном MSVC, но только один с clang и gcc. Это приводит к совершенно другим результатам выполнения кода. static const char *A = "some"; static const char *B = "some"; void f() { if (A == B) { throw "Hello, string merging!"; } …


3
Что вызывает сигнал SIGILL?
Я портирую код C ++ на Android с помощью NDK и GCC. Код в основном работает. В какой-то момент при отладке в Eclipse вызов Dabbler::Android::Factory* pFactory = new Dabbler::Android::Factory; вызывает эту ошибку: Thread [1] (Suspended: Signal 'SIGILL' received. Description: Illegal instruction.) 1 <symbol is not available> 0x812feb44 Что это значит? …

2
Функция с тем же именем, но другой подписью в производном классе
У меня есть функция с тем же именем, но с другой сигнатурой в базовом и производном классах. Когда я пытаюсь использовать функцию базового класса в другом классе, который наследуется от производного, я получаю сообщение об ошибке. См. Следующий код: class A { public: void foo(string s){}; }; class B : …

9
stdcall и cdecl
Существует (среди прочего) два типа соглашений о вызовах - stdcall и cdecl . У меня к ним несколько вопросов: Когда вызывается функция cdecl, как вызывающий абонент узнает, следует ли освобождать стек? Знает ли вызывающий на месте вызова, является ли вызываемая функция функцией cdecl или stdcall? Как это работает ? Как …
92 c++  stdcall  cdecl 


8
Альтернатива vector <bool>
Как (надеюсь) мы все знаем, vector&lt;bool&gt;он полностью сломан и не может рассматриваться как массив C. Как лучше всего получить эту функциональность? До сих пор я думал о следующих идеях: Используйте vector&lt;char&gt;вместо этого, или Используйте класс-оболочку и vector&lt;bool_wrapper&gt; Как вы, ребята, справляетесь с этой проблемой? Мне нужен c_array()функционал. В качестве побочного …
92 c++  stl  vector  boolean 

3
Когда частный конструктор не является частным конструктором?
Допустим, у меня есть тип, и я хочу сделать его конструктор по умолчанию закрытым. Я пишу следующее: class C { C() = default; }; int main() { C c; // error: C::C() is private within this context (g++) // error: calling a private constructor of class 'C' (clang++) // error …

6
Специализация шаблона отдельного метода из шаблонного класса
Всегда учитывая, что следующий заголовок, содержащий мой шаблонный класс, включен как минимум в два .CPPфайла, этот код компилируется правильно: template &lt;class T&gt; class TClass { public: void doSomething(std::vector&lt;T&gt; * v); }; template &lt;class T&gt; void TClass&lt;T&gt;::doSomething(std::vector&lt;T&gt; * v) { // Do something with a vector of a generic T } …

6
Удаление указателя в C ++
Контекст: Я пытаюсь осмыслить указатели, мы видели их всего пару недель назад в школе, а сегодня, тренируясь, я наткнулся на глупца? проблема, это может быть очень просто для вас, но у меня практически нет опыта программирования. Я видел довольно много вопросов в SO об удалении указателей, но все они, похоже, …

6
error :: make_unique не является членом std
Я пытаюсь скомпилировать следующую программу пула потоков, опубликованную в обзоре кода, чтобы проверить ее. /codereview/55100/platform-independant-thread-pool-v4 Но я получаю ошибки threadpool.hpp: In member function ‘std::future&lt;decltype (task((forward&lt;Args&gt;)(args)...))&gt; threadpool::enqueue_task(Func&amp;&amp;, Args&amp;&amp; ...)’: threadpool.hpp:94:28: error: ‘make_unique’ was not declared in this scope auto package_ptr = make_unique&lt;task_package_impl&lt;R, decltype(bound_task)&gt;&gt; (std::move(bound_task), std::move(promise)); ^ threadpool.hpp:94:81: error: expected primary-expression before …

4
Может ли константная корректность улучшить производительность?
Я много раз читал, что обеспечение константной корректности в вашем коде C или C ++ - это не только хорошая практика с точки зрения ремонтопригодности, но также может позволить вашему компилятору выполнять оптимизацию. Однако я также читал полную противоположность - это вообще не влияет на производительность. Поэтому есть ли у …

6
Начальная емкость вектора в C ++
Что из capacity()того, std::vectorчто создается с использованием конструктора по умолчанию? Я знаю, что size()это ноль. Можем ли мы заявить, что построенный по умолчанию вектор не вызывает выделения памяти в куче? Таким образом, можно было бы создать массив с произвольным резервом, используя одно выделение, например std::vector&lt;int&gt; iv; iv.reserve(2345);. Допустим, я почему-то …

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