Pytania otagowane jako c++

C ++ jest językiem programowania ogólnego przeznaczenia. Został pierwotnie zaprojektowany jako rozszerzenie do C i ma podobną składnię, ale teraz jest to zupełnie inny język. Ten znacznik służy do pytań o kod (kompilowany) za pomocą kompilatora C ++. Użyj tagu specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardową [C ++ 11], [C ++ 14], [C ++ 17] lub [C ++ 20] itp.

1
Jak zapobiec modyfikacji danych tablicowych?
Powiedzmy, że mam klasę, która wygląda tak (to tylko przykład): 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 


2
Czy mogę użyć niestandardowego alokatora dla std :: array dla bezpiecznych kluczy kryptograficznych?
Wiem, że std::arrayjest całkowicie przydzielony na stosie, ale to pytanie jest uzasadnione względami bezpieczeństwa, które wymagają dwóch rzeczy: Dane std::arrayzostaną zerowane lub losowo po zniszczeniu Dane std::arrayzostaną zablokowane , tak aby nigdy nie trafiały na dysk ani w przypadku awarii, ani w pamięci wymiany Zwykle std::vectorrozwiązaniem jest utworzenie niestandardowego programu …

4
Od języka naturalnego do wyrażenia w C ++
Zadanie: Przetłumacz następujące wyrażenia języka naturalnego na wyrażenia C ++. Załóżmy, że wszystkie zmienne są liczbami nieujemnymi lub wartością logiczną (o wartości true lub false). Język naturalny: Albo a i b są fałszywe, lub c jest prawdą, ale nie jedno i drugie. Moje rozwiązanie: (a==0 && b==0)xor(c==1) Rozwiązanie dla profesorów: …
9 c++  logic 

1
Co oznacza „zdecydowanie wcześniej”?
Wyrażenie „zdecydowanie zdarza się wcześniej” jest używane kilkakrotnie w standardowym projekcie C ++. Na przykład: Zakończenie [basic.start.term] / 5 Jeśli zakończenie inicjalizacji obiektu o czasie przechowywania statycznym nastąpi zdecydowanie przed wywołaniem std :: atexit (patrz [support.start.term]), wywołanie funkcji przekazane do std :: atexit jest sekwencjonowany przed wywołaniem obiektu destruktora dla …

1
Czy wywoływanie współbieżności :: concurrent_vector :: push_back jest bezpieczne podczas iteracji po tym współbieżnym wektorze w innym wątku?
push_back , zaczynają , koniec opisane są jako równoczesne sejf w https://docs.microsoft.com/en-us/cpp/parallel/concrt/reference/concurrent-vector-class?view=vs-2019#push_back Jednak poniższy kod jest twierdzący. Prawdopodobnie dlatego, że element został dodany, ale jeszcze nie zainicjowany. 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) …

3
foo (void) vs foo (void *)
Pod względem funkcjonalnym i składniowym, czy istnieje różnica między funkcją, której prototypem jest int foo(void)i int foo(void *)? Znam różnicę między, na przykład, int bar(int)a int bar(int *)- jeden z nich szuka int, a drugi szuka wskaźnika int. Czy voidzachowuje się w ten sam sposób?


1
Jak wywołać metody silnika trzepotania z innego wątku
Używam trzepotania pulpitu dla Linuksa. Nazywam metodę o nazwie, MarkTextureFrameAvailablektóra ma oznaczać teksturę do ponownego wysłania przez silnik. Ponieważ programuję odtwarzacz wideo, muszę dzwonić MarkTextureFrameAvailablez wątku odtwarzacza. Problem polega na tym, że silnik zmusza mnie do wywołania MarkTextureFrameAvailable(i dowolnej innej metody silnika) z wątku, który utworzył silnik. Możesz zobaczyć, że …

1
Czy ta implementacja C ++ AtomicInt jest poprawna?
Przesłanka: Pracuję w środowisku ARM (prawie bez systemu), w którym nawet nie mam C ++ 11 (z std::atomic<int>) dostępnym, więc proszę unikać odpowiedzi typu „ po prostu użyj standardowego C ++std::atomic<int> ”: nie mogę . Czy ta implementacja ARM AtomicInt jest poprawna? (załóżmy, że architektura ARM to ARMv7-A ) Czy …

3
list :: empty () wielowątkowe zachowanie?
Mam listę, z której chcę, aby różne wątki pobierały elementy. Aby uniknąć zablokowania muteksu strzegącego listy, gdy jest pusta, sprawdzam empty()przed zablokowaniem. W porządku, jeśli wezwanie do list::empty()jest nieprawidłowe w 100% przypadków. Chcę tylko uniknąć awarii lub zakłóceń jednoczesnych list::push()i list::pop()połączeń. Czy mogę bezpiecznie założyć, że VC ++ i Gnu …

3
Generowanie kodu Lambda w C ++ za pomocą funkcji przechwytywania inicjałów w C ++ 14
Próbuję zrozumieć / wyjaśnić kod kodu, który jest generowany, gdy przechwytywania są przekazywane do lambdas, szczególnie w uogólnionych przechwytywaniach init dodanych w C ++ 14. Podaj poniższe przykłady kodu wymienione poniżej. Moje obecne rozumienie tego, co wygeneruje kompilator. Przypadek 1: przechwytywanie według wartości / przechwytywanie domyślne według wartości int x …
9 c++  lambda  c++14  move 

2
Prawidłowa składnia wywołania pseudo-destruktora dla zmiennej swobodnej
Rozważ następujący program demonstracyjny. #include <iostream> int main() { typedef float T; 0.f.T::~T(); } Ten program jest kompilowany przez Microsoft Visual Studio Community 2019. Ale clangi gccpoproś o taki błąd prog.cc:7:5: error: unable to find numeric literal operator 'operator""f.T' 7 | 0.f.T::~T(); | ^~~~~ Jeśli napiszesz takie wyrażenie, ( 0.f …


2
Konstruuj standardowe wyjątki za pomocą argumentu zerowego wskaźnika i niemożliwych warunków dodatkowych
Rozważ następujący program: #include<stdexcept> #include<iostream> int main() { try { throw std::range_error(nullptr); } catch(const std::range_error&) { std::cout << "Caught!\n"; } } GCC i Clang z wywołaniem libstdc ++ std::terminatei przerywają program z komunikatem terminate called after throwing an instance of 'std::logic_error' what(): basic_string::_S_construct null not valid Clang z libc ++ …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.