#include<iostream>
using namespace std;
class Base
{
public :
void show()
{
cout<< " In Base " ;
}
};
class Derived: public Base
{
public :
int x;
void show()
{
cout<< "In Derived " ;
}
Derived()
{
x = 10;
}
};
int main( void )
{
Base *bp, b;
Derived d;
bp = &d;
bp->show();
cout << bp->x;
return 0;
}
|
(A) Compiler Error in line ” bp->show()”
(B) Compiler Error in line ” cout <x”
(C) In Base 10
(D) In Derived 10
Answer: (B)
Explanation: A base class pointer can point to a derived class object, but we can only access base class member or virtual functions using the base class pointer because object slicing happens when a derived class object is assigned to a base class object. Additional attributes of a derived class object are sliced off to form the base class object.
Quiz of this Question