Als «c++» getaggte Fragen

C ++ ist eine universelle Programmiersprache. Es wurde ursprünglich als Erweiterung von C entwickelt und hat eine ähnliche Syntax, ist aber jetzt eine völlig andere Sprache. Verwenden Sie dieses Tag für Fragen zu Code, der mit einem C ++ - Compiler kompiliert werden soll. Verwenden Sie ein versionierungsspezifisches Tag für Fragen zu einer bestimmten Standardversion [C ++ 11], [C ++ 14], [C ++ 17] oder [C ++ 20] usw.

3
Kann ein Zeiger auf die Basis auf ein Array abgeleiteter Objekte zeigen?
Ich ging heute zu einem Vorstellungsgespräch und bekam diese interessante Frage. Warum stürzt dieser Code ab, abgesehen von dem Speicherverlust und der Tatsache, dass es keinen virtuellen dtor gibt? #include <iostream> //besides the obvious mem leak, why does this code crash? class Shape { public: virtual void draw() const = …
99 c++  pointers 

2
Warum wird std :: ssize () in C ++ 20 eingeführt?
C ++ 20 führte die std::ssize()freie Funktion wie folgt ein: template <class C> constexpr auto ssize(const C& c) -> std::common_type_t<std::ptrdiff_t, std::make_signed_t<decltype(c.size())>>; Eine mögliche Implementierung scheint zu verwenden static_cast, um den Rückgabewert der size()Mitgliedsfunktion von cl ass C in sein vorzeichenbehaftetes Gegenstück umzuwandeln . Da die size()Mitgliedsfunktion von C immer nicht …
99 c++  stl  unsigned  signed  c++20 

12
C ++ - Präprozessor __VA_ARGS__ Anzahl der Argumente
Einfache Frage, auf die ich im Internet keine Antwort finden konnte. Wie kann man in Makros mit variablen Argumenten die Anzahl der Argumente ermitteln? Ich bin mit Boost-Präprozessor einverstanden, wenn er die Lösung hat. Wenn es einen Unterschied macht, versuche ich, eine variable Anzahl von Makroargumenten zu konvertieren, um die …


5
Warum benötigt C ++ einen vom Benutzer bereitgestellten Standardkonstruktor, um ein const-Objekt standardmäßig zu erstellen?
Der C ++ - Standard (Abschnitt 8.5) lautet: Wenn ein Programm die Standardinitialisierung eines Objekts eines const-qualifizierten Typs T anfordert, muss T ein Klassentyp mit einem vom Benutzer bereitgestellten Standardkonstruktor sein. Warum? Ich kann mir keinen Grund vorstellen, warum in diesem Fall ein vom Benutzer bereitgestellter Konstruktor erforderlich ist. struct …
99 c++ 






16
Saubere Möglichkeiten, mehrere 'for'-Schleifen zu schreiben
Für ein Array mit mehreren Dimensionen müssen wir normalerweise forfür jede seiner Dimensionen eine Schleife schreiben . Beispielsweise: vector< vector< vector<int> > > A; for (int k=0; k<A.size(); k++) { for (int i=0; i<A[k].size(); i++) { for (int j=0; j<A[k][i].size(); j++) { do_something_on_A(A[k][i][j]); } } } double B[10][8][5]; for (int …
98 c++  for-loop 

4
Was ist die richtige Antwort für cout << a ++ << a;?
Kürzlich gab es in einem Interview eine folgende objektive Frage. int a = 0; cout &lt;&lt; a++ &lt;&lt; a; Antworten: ein. 10 b. 01 c. undefiniertes Verhalten Ich antwortete auf Wahl b, dh die Ausgabe wäre "01". Zu meiner Überraschung wurde mir später von einem Interviewer gesagt, dass die richtige …
98 c++  c++-faq 

14
Soll ich von std :: exception erben?
Ich habe gesehen, dass mindestens eine zuverlässige Quelle (eine von mir verwendete C ++ - Klasse) empfohlen hat, von anwendungsspezifischen Ausnahmeklassen in C ++ zu erben std::exception. Die Vorteile dieses Ansatzes sind mir nicht klar. In C # liegen die Gründe für das Erben auf der ApplicationExceptionHand: Sie erhalten eine …

4
Warum kopieren wir dann umziehen?
Ich habe irgendwo Code gesehen, in dem jemand beschlossen hat, ein Objekt zu kopieren und es anschließend in ein Datenelement einer Klasse zu verschieben. Dies ließ mich insofern verwirrt, als ich dachte, der springende Punkt beim Bewegen sei, das Kopieren zu vermeiden. Hier ist das Beispiel: struct S { S(std::string …

6
(Wie) kann ich die Elemente in einer Aufzählung zählen?
Diese Frage kam mir in den Sinn, als ich so etwas hatte enum Folders {FA, FB, FC}; und wollte ein Array von Containern für jeden Ordner erstellen: ContainerClass*m_containers[3]; .... m_containers[FA] = ...; // etc. (Verwenden von Karten ist es viel eleganter zu verwenden: std::map&lt;Folders, ContainerClass*&gt; m_containers;) Um jedoch auf meine …
98 c++  count  enumeration 

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.