It is possible to call a member function on a zero pointer, as is demonstrated in Program 1, however, in many cases, this would suggest a flaw in the design.
Program 1. Checking for this == 0.
class Complex { private: double re, im; public: Complex( double r = 0.0, double i = 0.0 ):re( r ), im( i ) { // empty constructor } double real() const { if ( this == 0 ) { // accessing 're' or 'im' will cause a crash return 0.0; } else { return re; } } }; |
A member function which checks if this == 0 cannot access any of the class members. Doing so will cause a segmentation fault, that is, your program is attempting to access an invalid memory location.
1. Download example.cpp and try it out.
2. Is the design of the code in Question 1 advisable?