Ist der C++ - Standard-Konstruktor immer aufgerufen werden, wie in C++ Primer?
Ich bin Neuling in C++. Stört dieses blöde Frage:
In C++ primer, 4. Auflage (Stanley-Lipmann -) auf Seite 52, es ist ein Satz, welcher sagt:
Den default-Konstruktor verwendet wird, unabhängig davon, wo eine variable definiert ist.
Kann mir jemand erklären ein bisschen mehr sein? Diese Aussagen scheinen, wie es ist etwas fehlt.
- Ich glaube, Sie brauchen, um etwas mehr Kontext zu dem Satz, da es nicht immer wahr, dass default-Konstruktor verwendet wird immer...
- Sie sagen, es gibt keine dummen Fragen, aber klar, Sie sind falsch. Diese Website soll, also die Fragen und die Antworten helfen nicht nur derjenige, der tatsächlich fragt, eine bestimmte Frage hier, aber auch wer auf der Suche nach einer Antwort auf die gleiche oder eine ähnliche Frage. Jetzt denken. Wie hilfreich ist das Thema "c++ Neuling : Dumme Frage". Tun Sie etwas für die Gemeinschaft. Denken Sie was Sie sind das Fragen und die Fragen richtig, und die Gemeinschaft könnte Ihnen helfen.
- in welchem Kapitel/Abschnitt? Ich kann nicht scheinen zu finden, dass die Satz
- Oder, @Maciej, können Sie einfach Bearbeiten Sie die Frage sich selbst, um es zu beheben! Bei 2196 rep, Sie haben die macht dazu. Denken Sie daran, wie viel Zeit es nahm, um zu Komponieren, dass der Aufsatz von Ihnen und Kontrast es mit der Zeit zu beheben die eigentliche Frage-Titel. Sie hätte Links etwas weniger beißender Kommentar wie "Bitte stellen Sie sicher Titel sind sinnvoll in der Zukunft. Feste für Sie." und fixiert es sich und die Zeit hatte, zu ersticken out für einen Kaffee 🙂
- Sicherlich der beste Weg gewesen wäre, zu zeigen, dass und warum der Titel war wenig hilfreich, und zu beheben. Nur die Befestigung würde es nicht machen extdummy etwas lernen.
- Ja, ich habe, dass macht, aber ich bin immer noch lernen, wie es zu benutzen. Nein, ich meine nicht, dass ich lernen, wie man die UI SO, sondern SO, wie man es zum nutzen der Gemeinschaft. Ich Tat, was Sie sagten einmal, und ich war nicht zufrieden. Ich versuchte eine andere Taktik dieser Zeit, und ich bin nicht erfreut zu. Sieht aus wie ich habe meine Lektion. Tut mir Leid, wenn der Kommentar kam zu scharfen. Ich würde nicht etwas schreiben, wie dass bei anderen schlechte Frage, aber hier extdummy beschrieben, die Frage so dumm, zweimal selbst, so dass mein Kommentar gerechtfertigt, für meinen Geschmack. Vielleicht habe ich mich geirrt.
- Nein, Sie waren nicht falsch. Ich mag zu denken, SO wie ein Schwarm Bienen oder ein Organismus, der aus Zellen. Jede Zelle ist frei zu tun, vollständig, was er wünscht, innerhalb der Regeln und aufgrund des statistischen Verhaltens der Organismus gut funktioniert. Ich war gerade dabei, nach vorne den Standpunkt einer dieser Zellen, und ich wollte nicht zu beleidigen (daher auch der smiley), also entschuldigt, wenn es kam auf diese Weise. Ich muss zugeben, dass manchmal ich bin hin und her gerissen als auch, was zu tun ist mit einigen Fragen, ein Grund warum ich nie akzeptiert Nominierung als moderator - ich würde wahrscheinlich eine üble faschistische Diktator bully-boy 🙂
- Ich denke, dieser Ort braucht Menschen, genau so. Aber der job ist schrecklich 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus dem Buch selbst:
(mein Kursivdruck).
Du bist also in einem Abschnitt des Buches, wo Sie schon reden, default-Konstruktoren (wie sollte sich das in einigen der anderen Antworten, die default-Konstruktor ist definitiv nicht immer verwendet).
Alle, die das Buch zu sagen ist, in Situationen, in denen der default-Konstruktor ist verwendet, es macht überhaupt keinen Unterschied, wo die variable definiert ist (innerhalb oder außerhalb von Funktionen, die innerhalb oder außerhalb von Klassen, in Klammern wie Schleifen, auswahlanweisungen oder sogar nackt die Klammern, und so weiter).
Wenn Sie eine Klasse
Object
:und Sie instanziieren ein in einer Funktion wie folgt:
Den default-Konstruktor verwendet werden. Objekte aufgebaut sind mit dem default-Konstruktor, wenn Sie erklären, Sie innerhalb einer anderen Klasse und instanziiert werden, die anderen in der Klasse:
Vermutlich meinst du Stanley Lippman?
Trotzdem, obwohl ich don ' T haben eine Kopie nützlich, um zu überprüfen, ich Schätze, er meint wenn Sie so etwas wie:
...die
X
Objekt initialisiert wird mit der default-ctor, unabhängig davon, ob das Objekt global (außerhalb jeder Funktion), lokal in einer Funktion, oder lokal auf einige andere Bereich innerhalb einer Funktion (z.B. in einerfor
loop).Vergleichen Sie das mit einem built-in-Typ-Zeile
int
, die eher komplexere Regeln: eine Globaleint
(definiert außerhalb der Funktion) oder man definiert innerhalb einer Funktion, aber mitstatic
Speicher-Klasse, werden mit null initialisiert, aber einint
definiert mit automatischer Speicherung (definiert innerhalb einer Funktion, ohne Angabestatic
) ist "default-initialisiert", was (in diesem Fall) bedeutet, es ist nicht initialisiert, um einen berechenbaren Wert.$12.1
Den default-Konstruktor (12.1), copy-Konstruktor und copy-Zuweisungsoperator (12.8) und destructor (12.4) sind spezielle member-Funktionen. Die Umsetzung wird implizit deklarieren Sie diese member-Funktionen für ein Klasse-Typ, wenn das Programm nicht explizit deklarieren, außer, wie bereits in 12.1. Die Umsetzung wird implizit definieren Sie, wenn Sie verwendet werden, wie in 12.1, 12.4 und 12.8. Programme sollen nicht definieren implizit deklarierte spezielle member-Funktionen. Programme können explizit zu implizit deklariert spezielle member-Funktionen. [Beispiel: ein Programm kann explizit aufgerufen werden, nehmen Sie sich die Adresse oder ein Zeiger auf member einer implizit deklariert spezielle member-Funktion.