Articles of c ++ faq

Std :: list :: remove metodo call destroyer di ogni elemento rimosso?

std::list lst; //…. Node * node = /* get from somewhere pointer on my node */; lst.remove(node); Std :: list :: remove metodo call destroyer (e memoria libera) di ogni elemento rimosso? Se sì, come posso evitarlo?

Perché `std :: move` ha il nome` std :: move`?

La funzione std::move(x) C ++ 11 non sposta affatto nulla. È solo un cast di valore-r. Perché è stato fatto? Non è fuorviante?

Differente risultato in virgola mobile con ottimizzazione abilitata – bug del compilatore?

Il codice seguente funziona su Visual Studio 2008 con e senza ottimizzazione. Ma funziona solo su g ++ senza ottimizzazione (O0). #include #include #include double round(double v, double digit) { double pow = std::pow(10.0, digit); double t = v * pow; //std::cout << "t:" << t << std::endl; double r = std::floor(t + 0.5); //std::cout […]

Perché sostituire uno nuovo predefinito e cancellare gli operatori?

Perché dovrebbe sostituire l’operatore predefinito new ed delete con un new personalizzato ed delete operatori? Questo è in continuazione Overloading new ed delete nelle FAQ C ++ immensamente illuminanti: Sovraccarico dell’operatore Una voce successiva a questa FAQ è: Come dovrei scrivere standard conformi agli standard ISO C ++ e delete operatori? Nota: la risposta è […]

Perché una class template derivata non ha accesso agli identificatori di una class template di base?

Prendere in considerazione: template class Base { public: static const bool ZEROFILL = true; static const bool NO_ZEROFILL = false; } template class Derived : public Base { public: Derived( bool initZero = NO_ZEROFILL ); // NO_ZEROFILL is not visible ~Derived(); } Non sono in grado di compilarlo con GCC g ++ 3.4.4 (cygwin). Prima […]

Perché ‘questo’ è un puntatore e non un riferimento?

Stavo leggendo le risposte a questa domanda C ++ pro e contro e ho ottenuto questo dubbio mentre leggevo i commenti. i programmatori trovano spesso confuso che “questo” sia un puntatore ma non un riferimento. un’altra confusione è il motivo per cui “ciao” non è di tipo std :: string ma restituisce un char const […]

Quali sono i vantaggi dell’utilizzo di nullptr?

Questo pezzo di codice fa concettualmente la stessa cosa per i tre puntatori (inizializzazione sicura del puntatore): int* p1 = nullptr; int* p2 = NULL; int* p3 = 0; E quindi, quali sono i vantaggi dell’assegnazione dei puntatori nullptr sull’assegnazione loro dei valori NULL o 0 ?

Semantica di bandiere su basic_ios

Mi trovo ripetutamente sconcertato dai flag rdstate() – good() , bad() , eof() , fail() – e come sono espressi in basic_ios::operator! , operator bool e operator void* . Qualcuno potrebbe togliermi dalla mia infelicità e spiegarlo così non dovrò mai pensarci due volte?

Perché le funzioni inline di C ++ nell’intestazione?

NB Questa non è una domanda su come utilizzare le funzioni inline o come funzionano, più perché sono fatte come sono. La dichiarazione di una funzione membro della class non ha bisogno di definire una funzione come inline , è solo l’effettiva implementazione della funzione. Ad esempio, nel file di intestazione: struct foo{ void bar(); […]

Come ottenere IOStream per ottenere prestazioni migliori?

La maggior parte degli utenti C ++ che hanno imparato C preferiscono usare la famiglia di funzioni printf / scanf anche quando codificano in C ++. Anche se ammetto di trovare l’interfaccia migliore (in particolare il formato e la localizzazione POSIX), sembra che una preoccupazione travolgente sia rappresentata dalle prestazioni. Dando un’occhiata a questa domanda: […]