Final answer:
In OOP, constructors and destructors do not return values; they are designed to initialize and clean up an object respectively. A constructor is automatically called upon object creation and a destructor when an object is no longer in use, neither of these methods return anything, including values or null pointers.
Step-by-step explanation:
In Object-Oriented Programming (OOP), constructors and destructors have specific roles. A constructor is a method used for initializing objects of a class, and a destructor is used to clean up and release resources before an object's lifecycle ends. It's important to note that constructors and destructors serve to initialize and clean up objects, and thus they do not return values like regular methods can.
When addressing the question of what cannot be returned by public constructors and destructors, the answer is b) Values. Constructors in OOP do not return values because the new operator, which is often used to create an instance of an object, returns the object itself. Similarly, a destructor does not return a value either; it simply executes when an object is no longer in use to perform clean-up tasks.
To address the options provided in the question: a) Objects are instantiated by constructors but not returned by them; c) Functions are not returned by constructors or destructors as they are not return-type methods; d) Null pointers are not returned by constructors, because constructors cannot return any value, including null pointers. Their purpose is to initialize the object’s state, not to pass data back to the calling context.