Guten Morgen zusammen, bei einer beliebigen Klasse Foo(), gibt es in C++ einen Unterschied zwischen den beiden Anweisungen:
1 | Foo foo_1; |
2 | Foo foo_2 = Foo(); |
Viele Grüße
|
Forum: PC-Programmierung C++ Objekt erzeugenGuten Morgen zusammen, bei einer beliebigen Klasse Foo(), gibt es in C++ einen Unterschied zwischen den beiden Anweisungen:
Viele Grüße
Beitrag #6688322 wurde von einem Moderator gelöscht.
Μαtthias W. schrieb: > Ich würde sagen nein > > https://godbolt.org/z/x6a7aaz4o > > Matthias Ach sehr gut.. die wahre Hilfe hier war es mir den Komfort eines Online-Compilers in Erinnerung zu rufen. :-) Vielen Dank. Zweifler schrieb: > Μαtthias W. schrieb: >> Ich würde sagen nein >> >> https://godbolt.org/z/x6a7aaz4o >> >> Matthias > > Ach sehr gut.. die wahre Hilfe hier war es mir den Komfort eines > Online-Compilers in Erinnerung zu rufen. :-) Vielen Dank. Genau deshalb hab ich in der Art geantwortet ;-) Μαtthias W. schrieb: > Ich würde sagen nein > > https://godbolt.org/z/x6a7aaz4o > > Matthias Natürlich gibt es einen Unterschied. https://godbolt.org/z/8eKno3xhe mh schrieb: > Natürlich gibt es einen Unterschied. > https://godbolt.org/z/8eKno3xhe Ah, sehr gut. Ich versuche mal es zu erklären: Variante 1 ist eine Definition (= Deklaration + Initialisierung) während Variante 2 eine Deklaration mit Zuweisung ist. Da der Copy-Construktor gelöscht wurde, schlägt das in dem Fall fehl. Zweifler schrieb: > Variante 1 ist eine Definition (= Deklaration + Initialisierung) während > Variante 2 eine Deklaration mit Zuweisung ist. Da der Copy-Construktor > gelöscht wurde, schlägt das in dem Fall fehl. Nein, beides sind Definitionen und bei beiden findet eine Initialisierung statt. Bei 1 mit dem default(, bei 2 mit copy Constructor)*. *vereinfacht Einfach gesagt: Formal sind die beiden Zeilen unterschiedlich, ueblicherweise kommt es aber genau auf's gleiche raus. Ein Beispiel wann nicht hat mh ja schon genannt. Zweifler schrieb: > Variante 1 ist eine Definition (= Deklaration + Initialisierung) während > Variante 2 eine Deklaration mit Zuweisung ist. Da der Copy-Construktor > gelöscht wurde, schlägt das in dem Fall fehl. Eines der ganz wichtigen Dinge in C++ ist des, den Unterschied zwischen einer Initialisierung und einer (Kopier-)Zuweisung zu verstehen (natürlich neben der Unterscheidung einer Deklaration und Definition, s.a. ODR). Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
|
|