Methoden auf NULL Pointer aufrufen erlaubt?



  • Wie problematisch ist es eine (nicht virtuelle!)Methode auf einem Null Pointer aufzurufen?
    So lange nicht lesend/schreibend auf Attribute des Objektes zugegriffen wird, gibt es ja keine Komplikationen.

    #include <iostream>
    using namespace std;
    
    class Foo
    {
    public:
        void func();
    };
    
    void Foo::func()
    {
        cout << "Kein Problem" << endl;
    }
    
    int main()
    {
        Foo* f = NULL;
        f->func();
    }
    


  • Egal, was dein Compiler nun tatsächlich macht - du brauchst ein gültiges Objekt, um dessen Methoden aufrufen zu können. Alles andere führt zu undefiniertem Verhalten (eventuell geht's, aber ich würde mich nicht darauf verlassen).

    (PS: Wenn du tatsächlich eine Methode ohne Objektzugriff verwenden willst, mach' sie static)


Anmelden zum Antworten