Was passiert, wenn ich eine Struktur an eine vararg-Funktion übergebe?

8
%Vor%

Wird die gesamte struct kopiert und auf dem Stapel übergeben? Wenn ja, werden Kopierkonstruktoren aufgerufen? Wird der Zeiger übergeben? Ist das sicher?

    
Lorenzo Pistone 04.11.2012, 01:59
quelle

2 Antworten

2

Ja, wenn Sie einen lvalue übergeben, wird die Konvertierung von lvalue in rvalue ausgeführt, was bedeutet, dass der Kopierkonstruktor aufgerufen wird, das Objekt in eine neue Kopie zu kopieren und dieses als Argument zu übergeben.

    
Johannes Schaub - litb 04.11.2012, 02:54
quelle
1

void f(...) verwendet eine Bit-Kopie. Für Ihr somestruct wird kein Standardkonstruktor oder Kopierkonstruktor generiert, da dieser nur über C ++ - Einbautypen verfügt.

%Vor%

Ja, das ist vollkommen sicher.

Ich verweise Sie auf 'Inside C ++ Object Model' chapter 2 The Semantics of Constructors

    
billz 04.11.2012 02:06
quelle

Tags und Links