Запитання з тегом «c++»

C ++ - мова програмування загального призначення. Спочатку він був розроблений як розширення до C і має подібний синтаксис, але зараз це зовсім інша мова. Використовуйте цей тег для запитань про код (який потрібно) зібрати за допомогою компілятора C ++. Використовуйте тег, що стосується версії, для питань, пов’язаних із конкретною стандартною редакцією [C ++ 11], [C ++ 14], [C ++ 17] або [C ++ 20] тощо.

1
Порядок виконання оператора new та аргумент конструктора
Чи вказує специфікація C ++ порядок operator newі конструктор Aв new C(A()). G ++ нехай порядок буде A()-> new-> C(), але clang ++ нехай буде new-> A()-> C(). Чи різниця викликана невказаною поведінкою? г ++: 7.4.0 кланг ++: 10.0.0 #include <iostream> #include <cstdlib> struct A { A() { std::cout << …

1
Чи можна додати нуль до нульового вказівника?
Я знаю, що арифметика вказівника заборонена для нульових покажчиків. Але уявіть, у мене є щось подібне: class MyArray { int *arrayBegin; // pointer to the first array item, NULL for an empty array unsigned arraySize; // size of the array, zero for an empty array public: int *begin() const { …

1
Правильний спосіб повернути вказівник на "новий" об'єкт з функції Rcpp
Розглянемо 1) спеціальний клас з потенційно великим друком пам’яті та 2) функцію верхнього рівня, яка виконує деяку попередню обробку, потім створює та повертає новий об’єкт нашого спеціального класу. Щоб уникнути зайвого копіювання за значенням, функція розподіляє об'єкт і повертає на нього вказівник. Виходячи з попередньої дискусії , здається, що правильний …
9 c++  r  rcpp 

1
Спроба зрозуміти шаблони та пошук імен
Я намагаюся зрозуміти наступні фрагменти коду Фрагмент №1 template <typename T> struct A { static constexpr int VB = T::VD; }; struct B : A<B> { }; Ні gcc9, ні clang9 тут не створюють помилок. З. Чому цей код складається? Хіба ми не миттєві A<B>при спадкуванні від B? Немає VD …

1
Який еквівалент MSVC для -fno-char8_t?
У C ++ 20 u8рядкових літералів базуються на char8_tтипі. Вони навмисно більше не перетворюються char const*: const char* str = u8"Hall\u00f6chen \u2603"; // no longer valid in C++20 Звичайно, кінцева мета при переході на C ++ 20 - цілком піти з новою поведінкою (у прикладі вище: змінити тип str). Однак …

1
Як запобігти модифікації даних масиву?
Скажіть, у мене клас, який виглядає приблизно так (це лише приклад): class A { double *ptr; public: A() : ptr( new double[100] ) {} A( const A &other ) { other.ptr[7] = 15; } void doNotChangeMyData() const { ptr[43] = 14; } void changeMyData() { ptr[43] = 14; } ~A() …
9 c++  const 

1
Як може std :: lock_guard бути швидшим, ніж std :: mutex :: lock ()?
Я сперечався з колегою, про lock_guard, і він запропонував, щоб lock_guard був повільніше повільний, ніж mutex :: lock () / mutex :: unlock () через вартість екземпляра та unistantiate класу lock_guard. Тоді я створив цей простий тест і, несподівано, версія з lock_guard майже в два рази швидша за версію з …
9 c++  mutex 

2
Чи можу я використовувати спеціальний розподільник для std :: array для захищених криптографічних ключів?
Я знаю std::array, повністю розподілений у стеці, але це питання мотивоване питаннями безпеки, які потребують двох речей: Дані в std::arrayбуде знищені або рандомізовані при знищенні Дані в std::arrayбуде заблоковано , так що вони ніколи не переходять на диск ні при збої, ні в обмін пам'яті Зазвичай, з std::vector, рішення, це …

4
Від природної мови до виразу С ++
Призначення: Перекладіть такі вирази природних мов у вирази C ++. Припустимо, що всі змінні є негативними числами або булевими (значення true або false). Природна мова: Або a, і b є і хибними, або c є істинними, але не обидва. Моє рішення: (a==0 && b==0)xor(c==1) Рішення професора: (!a && !b) != …
9 c++  logic 

1
Що означає "сильно відбувається раніше"?
Словосполучення "сильно буває раніше" вживається кілька разів у проекті стандарту C ++. Наприклад: Припинення [basic.start.term] / 5 Якщо завершення ініціалізації об'єкта зі статичною тривалістю зберігання сильно відбувається перед викликом до std :: atexit (див. [Support.start.term]), виклик до функції, переданої в std :: atexit секвенується перед викликом деструктора для об'єкта. Якщо …

1
Чи безпечно для одночасного виклику concurrency :: concurrent_vector :: push_back під час ітерації над цим concurrent_vector в іншому потоці?
push_back , починає , кінець описується як паралельний сейфі в https://docs.microsoft.com/en-us/cpp/parallel/concrt/reference/concurrent-vector-class?view=vs-2019#push_back Однак наведений нижче код стверджує. Можливо, тому, що елемент доданий, але ще не ініціалізований. struct MyData { explicit MyData() { memset(arr, 0xA5, sizeof arr); } std::uint8_t arr[1024]; }; struct MyVec { concurrency::concurrent_vector<MyData> v; }; auto vector_pushback(MyVec &vec) -> void …


3
foo (void) vs foo (пустота *)
Функціонально та синтаксично кажучи, чи є різниця між функцією, прототипом якої є int foo(void)і int foo(void *)? Я знаю різницю між, наприклад, int bar(int)і int bar(int *)- один з них шукає int, а другий шукає int pointer. Чи voidповодиться так само?

1
Як викликати трепетні методи двигуна з іншої нитки
Я використовую робочий стіл Flutter для Linux. Я називаю метод, який називається, MarkTextureFrameAvailableякий повинен позначати текстуру, яка повинна бути відтворена двигуном. Оскільки я програмую відеоплеєр, мені потрібно дзвонити MarkTextureFrameAvailableз потоку програвача. Проблема полягає в тому, що двигун змушує мене дзвонити MarkTextureFrameAvailable(і будь-який інший метод двигуна) з потоку, який створив двигун. …

1
Це правильна реалізація C ++ AtomicInt?
Приміщення: я працюю із вбудованим у ARM (майже голим металом) середовищем, де у мене навіть немає C ++ 11 (з std::atomic<int>), тому, будь ласка, уникайте відповідей на кшталт " просто використовувати стандартний C ++std::atomic<int> ": я не можу . Чи правильна реалізація ARM AtomicInt? (припустимо, архітектура ARM - ARMv7-A ) …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.