Question.2
A function takes a base object by value:
void process(SensorBase s) { // By value! int v = s.read(); } TempSensor temp; process(temp); // Pass derived by value
What happens?
Select Answer
TempSensor::read() is called via polymorphism
TempSensor::read()
Compilation error -- cannot pass derived to base parameter
TempSensor is moved into the function
TempSensor
Object slicing -- only the SensorBase portion is copied; virtual dispatch is lost; SensorBase::read() is called (or pure virtual crash if abstract)
SensorBase
SensorBase::read()