Incurring Undefined Behavior When Calling a Member Function on a Null Object Pointer
A common interview question probes the potential consequences of invoking a member function on a null object pointer. This scenario can lead to undefined behavior, leaving the program open to unpredictable outcomes.
Let's examine the following code:
class A { public: void fun() { std::cout << "fun" << std::endl; } }; A* a = NULL; a->fun();
Calling the fun() method on the null pointer a triggers undefined behavior. Here's why:
When creating a pointer like a, it's essentially a memory address. Setting it to NULL indicates that this pointer doesn't point to any valid object. By accessing a->fun(), the program attempts to dereference the NULL pointer, which is forbidden.
Since the object pointed to by a doesn't exist, the program may exhibit unpredictable behavior, such as:
To prevent such undefined behavior, it's crucial to ensure that object pointers are valid before dereferencing them.
The above is the detailed content of What Happens When You Call a Member Function on a Null Object Pointer?. For more information, please follow other related articles on the PHP Chinese website!