Gast
#6688312
Guten Morgen zusammen, bei einer beliebigen Klasse Foo(), gibt es in C++ einen Unterschied zwischen den beiden Anweisungen:
1 | |
2 | |
Viele Grüße
|
Anzeige
|
C++ Objekt erzeugen
Gast
#6688312
Guten Morgen zusammen, bei einer beliebigen Klasse Foo(), gibt es in C++ einen Unterschied zwischen den beiden Anweisungen:
Viele Grüße Ich würde sagen nein https://godbolt.org/z/x6a7aaz4o Matthias
Beitrag #6688322 wurde von einem Moderator gelöscht.
Gast
#6688326
Μα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 ;-)
Gast
#6688343
Μα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
Gast
#6688359
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.
Gast
#6688422
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.
Gast
#6688486
Danke für die Anmerkungen. 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). Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|