Übergeben und Speichern einer const-Referenz über einen Konstruktor?

Dies ist wahrscheinlich eine einfache Frage, aber ich bleibe dabei. Ich versuche, ein Objekt über seinen Konstruktor von ObjectA an ObjectB (das Mitglied von ObjectA ist) weiterzugeben. Anstatt jedoch einen Wert zu übergeben, möchte ich nur eine konstante Referenz übergeben und diese Referenz auf unbestimmte Zeit speichern. Das Problem ist, dass ich nicht sicher bin, wie ich es machen soll.

Ich kann das zum Laufen bringenmit Zeigern so was:

class ClassB
{
private:
    int *ptrInternalX;
public:
    ClassB( int *tempX );
}

ClassB::ClassB( int *tempX )
{
    ptrInternalX = tempX
}

Auf diese Weise wird ein Objekt erstellt und ein Zeiger an ein int übergeben. Dieser Zeiger wird zur späteren Verwendung in der Klasse gespeichert.

Zeiger machen mir jedoch Sorgen über Speicherverluste und andere Probleme, wenn ich größere Objekte verwendeIch würde gerne versuchen, so etwas mit "konstanten Referenzen" zu machen. (const &). Dies scheint jedoch nicht zu funktionieren ...

class ClassB
{
private:
    int &internalX;
public:
    ClassB( const int &tempX );
}

ClassB::ClassB( const int &tempX )
{
    internalX = tempX
}

Ich weiß, dass Referenzen im Wesentlichen ein Alias ​​für eine vorhandene Variable sind (ein anderer Name, der auf dieselbe Speicheradresse verweist), und sie müssen sofort unter Verwendung einer vorhandenen Variablen initialisiert werden. Das erzeugt also einen Fehler in meinem Programm!

Ist das überhaupt möglich? Oder gibt es eine bessere / klarere Möglichkeit, so etwas zu tun? Die Gründe, warum ich konstante Verweise verwenden möchte, sind die Geschwindigkeit, mit der nur ein Verweis anstelle eines großen Objekts übergeben wird, während die Daten vor versehentlichen Änderungen und Speicherlecks geschützt werden. Ich bin sicher, dass es einen einfachen und direkten Weg dazu gibt Tun Sie dies, aber ich bin nicht sehr vertraut mit const Referenzübergabe.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage