Final answer:
A conversion constructor is called implicitly when an object is passed to a function by reference, considering the object is of a different type and an appropriate conversion constructor is available. The constructor converts the object to the type expected by the function.
Step-by-step explanation:
A conversion constructor is called implicitly in several scenarios within C++ programming. One of the common scenarios is when an object of one type is used to initialize an object of another type, and a suitable conversion constructor exists. However, with the answer options provided, the most fitting scenario is when an object is passed to a function that expects an object of a different type and this type can be constructed from the type of the object being passed. In this case, a conversion constructor is called to convert an object of one type to another type, allowing the function to work with the different types seamlessly.
It is important to note that the implicit calling of a conversion constructor can be prevented by marking the constructor as explicit, which would require an explicit cast to be invoked by the programmer.
Therefore, the correct answer to the question 'When is a conversion constructor called implicitly?' is: c. When an object is passed to a function by reference—assuming that the receiving function expects a different type and a conversion constructor is available.