Referenzen auf Pointer?



  • Hallo.
    Ist folgendes Beispiel standardmäßig und zeigen GetPointer und GetReference auf das selbe Objekt, oder wird bei GetReference eine Kopie erzeugt :/?

    class Test
    {
    public:
    	Test(int test) :
    		m_Test(test)
    	{
    	}
    	~Test()
    	{
    	}
    	int GetTest() const
    	{
    		return this->m_Test;
    	}
    
    private:
    	int m_Test;
    };
    
    class Manager
    {
    public:
    	Manager(Test &MyTest) :
    		m_pTest(&MyTest)
    	{
    	}
    	~Manager()
    	{
    	}
    	Test *GetPointer() const
    	{
    		return this->m_pTest;
    	}
    	Test &GetReference() const
    	{
    		return *this->m_pTest;
    	}
    
    private:
    	Test *m_pTest;
    };
    
    // ...
    Test a(22);
    Manager b(a);
    
    Test *c = b.GetPointer();
    Test &d = b.GetReference();
    
    // c->GetTest() sollte 22 sein
    // d.GetTest() sollte ebenfalls 22 sein
    

    Frage ist nun, ob d auf das Original oder auf eine Kopie zeigt?

    Gruß



  • Die Address-Of-Operator angewendet auf eine Referenz liefert den Zeiger auf das Objekt, das die Referenz referenziert.
    Was ich mich frage - wo du doch schon so ein ausgefeiltes Beispiel hast... Warum probierst du es nicht einfach aus?^^
    Zur zweiten Frage: Nein, der Zeiger wird dereferenziert und somit wird eine Referenz auf das "angezeigte" Objekt zurückgeliefert. Will meinen GetPointer und GetReference geben Zeiger respektive Referenz auf das selbe Objekt zurück.



  • Gute Idee .

    Test *c = b.GetPointer();
    std::cout << c << std::endl;
    
    Test &d = b.GetReference();
    std::cout << &d << std::endl;
    

    Gibt jeweils die gleiche Adresse zurück. Das heißt, mein Vorhaben klappt? Widerspricht aber deiner Antwort 😕

    Edit: Doch nicht. Danke!


Anmelden zum Antworten