2017-02-03 1 views
0

Kann ich den Parameter const-Verweis innerhalb des Methodenaufrufs erstellen? Ich weiß, es kompiliert, aber bin mir nicht ganz sicher, dass es zur Laufzeit korrekt ist.Objekte beim Übergeben als Const-Referenz erstellen C++

Ich habe die folgenden Klassen:

class A{ 
public: 
void doThings(const B& b); 
} 

class B{ 
    B(int i, int j); 

} 


int main{ 

    A a; 

    a.doThings(B(1,2)); //Is this OK? 

} 
+1

Was erwarten Sie falsch? –

+0

Ihr Code wird definitiv nicht kompiliert. –

+1

Ja, Sie können einen Const-Verweis auf ein temporäres Objekt in einer Methode/Funktion verwenden, aber Sie können keinen Zeiger darauf speichern oder in einem anderen Thread verwenden, und der Compiler schützt Sie nicht davor. – gabry

Antwort

2

Die Konzept ist in Ordnung ... ein temporäres B wird unter Bezugnahme aufgebaut und weitergegeben werden. Speichern Sie diese Referenz nicht in A oder verwenden Sie sie außerhalb des Bereichs von doThings.

Aber Ihr Code ist nicht gut. Hier habe ich es für Sie repariert:

class B; 

class A { 
public: 
    void doThings(const B& b) {} 
}; 

class B { 
public: 
    B(int i, int j) {} 
}; 


int main() { 

    A a; 

    a.doThings(B(1, 2)); //Is this OK? 

} 
Verwandte Themen