Als «c++» getaggte Fragen

103
Warum sind C-Zeichen-Literale Ints anstelle von Zeichen?

In C ++ , sizeof('a') == sizeof(char) == 1. Dies ist intuitiv sinnvoll, da 'a'es sich um ein Zeichenliteral handelt und sizeof(char) == 1wie im Standard definiert. In C jedoch sizeof('a') == sizeof(int). Das heißt, es scheint, dass C-Zeichenliterale tatsächlich ganze Zahlen sind. Weiß jemand...

103
Garantierte Lebensdauer der temporären in C ++?

Bietet C ++ eine Garantie für die Lebensdauer einer temporären Variablen, die innerhalb eines Funktionsaufrufs erstellt, aber nicht als Parameter verwendet wird? Hier ist eine Beispielklasse: class StringBuffer { public: StringBuffer(std::string & str) : m_str(str) { m_buffer.push_back(0);...

103
Wo ist shared_ptr?

Ich bin gerade so frustriert, nachdem ich mehrere Stunden lang versucht habe herauszufinden, wo sich shared_ptr befindet. Keines der Beispiele, die ich sehe, zeigt vollständigen Code, der die Überschriften für shared_ptr(und das Arbeiten) enthält. Einfach gesagt std, tr1und <memory>hilft...

103
Binärdatei lesen und schreiben

Ich versuche, Code zu schreiben, um eine Binärdatei in einen Puffer zu lesen, und dann den Puffer in eine andere Datei zu schreiben. Ich habe den folgenden Code, aber der Puffer speichert nur ein paar ASCII-Zeichen aus der ersten Zeile in der Datei und sonst nichts. int length; char *...

103
Komma im C / C ++ - Makro

Angenommen, wir haben ein solches Makro #define FOO(type,name) type name Was wir gerne gebrauchen könnten FOO(int, int_var); Aber nicht immer so einfach: FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2 Natürlich könnten wir tun: typedef...

103
Fügt C ++ 14 C ++ neue Schlüsselwörter hinzu?

Das C ++ - Standardkomitee scheut sich, der Sprache neue Schlüsselwörter hinzuzufügen, bei C ++ 11 war dies jedoch nicht der Fall. Einige Beispiele: constexpr decltype thread_local auto // New usage noexcept nullptr static_assert alignof alignas Gibt es neue Schlüsselwörter, die mit C ++ 14...

103
Compiler mit 'pi'-Symbol bei Fehler

Ich habe Code auf Coliru getestet und eine seltsame Ausgabe erhalten. Ich ging den Code durch und konnte ihn mit diesem einfachen Code reproduzieren : int main() { &pi; } Die Ausgabe auf g ++: klirren: Wenn Sie beispielsweise nur pi(ohne die Adresse von) verwenden, wird das erwartete...

103
Warum tippt jeder über Standard-C-Typen?

Wenn Sie verwenden möchten , Qt , müssen Sie umarmen quint8, quint16und so weiter. Wenn Sie verwenden möchten GLib , müssen Sie willkommen guint8, guint16und so weiter. Auf Linux gibt es u32, s16und so weiter. uC / OS definiert SINT32, UINT16und so weiter. Und wenn Sie eine Kombination dieser...

103
Warum hat std :: set keine Member-Funktion "enthält"?

Ich benutze viel std::set<int>und oft muss ich einfach überprüfen, ob ein solches Set eine Nummer enthält oder nicht. Ich würde es natürlich finden zu schreiben: if (myset.contains(number)) ... Aber wegen des Fehlens eines containsMitglieds muss ich das umständliche schreiben: if...

102
Zeichenfolge c_str () vs. data ()

Ich habe an mehreren Stellen gelesen, dass der Unterschied zwischen c_str()und data()(in STL und anderen Implementierungen) darin besteht, dass c_str()immer null terminiert ist, während dies data()nicht der Fall ist. Soweit ich in tatsächlichen Implementierungen gesehen habe, tun sie entweder...

102
Verwenden der C ++ - Bibliothek in C-Code

Ich habe eine C ++ - Bibliothek, die verschiedene Klassen zum Verwalten von Daten bereitstellt. Ich habe den Quellcode für die Bibliothek. Ich möchte die C ++ - API erweitern, um C-Funktionsaufrufe zu unterstützen, damit die Bibliothek gleichzeitig mit C-Code und C ++ - Code verwendet werden...

102
Namespaces für Aufzählungstypen - Best Practices

Oft braucht man mehrere aufgezählte Typen zusammen. Manchmal hat man einen Namenskonflikt. Hierfür kommen zwei Lösungen in den Sinn: Verwenden Sie einen Namespace oder verwenden Sie 'größere' Enum-Elementnamen. Die Namespace-Lösung verfügt jedoch über zwei mögliche Implementierungen: eine...

102
Werden statische Felder vererbt?

Wenn statische Elemente geerbt werden, sind sie statisch für die gesamte Hierarchie oder nur für diese Klasse, dh: class SomeClass { public: SomeClass(){total++;} static int total; }; class SomeDerivedClass: public SomeClass { public: SomeDerivedClass(){total++;} }; int main() { SomeClass A;...