Segmentation fault on accessing virtual function of base class by base class pointer
Code:
#include<iostream>
using namespace std;
class A
{
public:
virtual void s()
{
cout<<"I am in A"<<endl;
}
};
class B:public A
{
public:
void s()
{
cout<<"I am in B"<<endl;
}
};
int main()
{
A *o;
o->s(); //Problem
B ob;
o=&ob;
o->s();
return 0;
}
Though that virtual function is accessible if I call it inside derived class' s(); using scope resolution, i.e.:
Code:
void s()
{
A::s();
cout<<"I am in B"<<endl;
}
Why can't I call base class (A's) virtual function by base class pointer?