Zeigeradresse und Objekt...



  • Hey!

    Hätte nicht gedacht, dass ich noch Fragen zu Zeigern hätte, aber grade ging mir was durch den Kopf und ich versteh das nicht:

    class Test
    {
    public:
    	void func()
    	{
    		std::cout << "Func" << std::endl;
    	}
    };
    
    ...
    
    Test test;
    Test* pTest = 0;
    
    // pTest = &test
    *pTest = test; // Was passiert hier?
    
    pTest->func(); // Funktioniert. Aber pTest = 0x00000000
    

    Zeiger können doch nur eine Adresse speichern. Nach *pTest = test; ist aber die Adresse von pTest 00000000. Trotzdem wird die Funktion aufgerufen! Wie ist das möglich? Wohin wird test zugewiesen?

    😕

    MfG


  • Mod

    *pTest = test; // Was passiert hier?
    

    Der Himmel fällt uns auf den Kopf.

    pTest->func(); // Funktioniert. Aber pTest = 0x00000000
    

    Die Vogonen arbeiten an einer neuen Hyperraumexpressroute.

    Ist alles undefiniert. Im ersten Fall wird versucht, den Nullzeiger pTest zu dereferenzieren, das ist nicht möglich. Der Aufruf einer Memberfunktion über einen Zeiger, der nicht auf ein entsprechendes Objekt zeigt, ist ebenfalls undefiniert. Was dein Compiler damit anstellt, spielt keine Rolle.



  • Ok danke, dachte mir schon dass das doch nicht sein kann 😉

    MfG


Anmelden zum Antworten