43 Stimmen

Prüfen auf ein Null-Objekt in C++

Ich habe bisher nur mit C gearbeitet und stoße in C++ auf einige ungewohnte Probleme.

Nehmen wir an, ich habe eine Funktion wie diese in C, was sehr typisch wäre:

int some_c_function(const char* var)
{
    if (var == NULL) {
        /* Exit early so we don't dereference a null pointer */
    }
    /* The rest of the code */
}

Und nehmen wir an, ich versuche, eine ähnliche Funktion in C++ zu schreiben:

int some_cpp_function(const some_object& str)
{
    if (str == NULL)  // This doesn't compile, probably because some_object doesn't overload the == operator

    if (&str == NULL) // This compiles, but it doesn't work, and does this even mean anything?
}

Im Grunde versuche ich nur zu verhindern, dass das Programm abstürzt, wenn some_cpp_function() mit NULL aufgerufen wird.

  • Was ist der typischste/üblichste Weg, dies mit einem C++-Objekt zu tun (ohne das Überladen der == Operator)?

  • Ist das überhaupt der richtige Ansatz? Das heißt, sollte ich keine Funktionen schreiben, die ein Objekt als Argument nehmen, sondern eher Mitgliedsfunktionen schreiben? (aber selbst wenn dies der Fall ist, beantworten Sie bitte die ursprüngliche Frage)

  • Gibt es Gründe, zwischen einer Funktion, die einen Verweis auf ein Objekt annimmt, und einer Funktion, die einen Zeiger auf ein Objekt im C-Stil annimmt, zu wählen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X