2016-08-10 4 views
1

Ich weiß, dass die Rückkehr const Verweis manchmal Probleme verursachen, wie die angenommene Antwort in diesem thread. Allerdings bin ich mir nicht sicher, ob die folgende Verwendung von const Referenz mit Objekt zurückgegeben mit impliziten dieser Zeiger immer sicher ist?Funktion, die const-Referenz von einer anderen Elementfunktion aufgerufen

class foo 
{ 
    private: 
    std::vector<double> vec; 

    public: 
    const std::vector<double>& Get_vec() const 
    { 
     return vec; 
    } 

    void some_method() 
    { 
     const std::vector<double> & vec2 = Get_vec(); // this->Get_vec 

     // do something with vec2 
    } 
} 
+1

Die akzeptierte Antwort states * Die einzige Möglichkeit, die ein Problem verursachen kann, ist, wenn der Aufrufer die Referenz speichert, anstatt die Zeichenfolge zu kopieren, und versucht, sie zu verwenden, nachdem das Objekt zerstört wurde was ist das Problem? – NathanOliver

Antwort

1

Diese Aussage

const std::vector<double> & vec2 = Get_vec(); 

entsprechen

const std::vector<double> & vec2 = vec; 

Es gibt keine irgendein Problem mit Verweisen auf Datenelemente einer Klasse innerhalb seiner Methoden (ich meine die Methode void some_method() ). In jedem Fall ist die Lebensdauer eines Verweises auf ein Datenelement eines Objekts innerhalb seiner Methode kürzer als die Lebensdauer des Objekts selbst.

Verwandte Themen