I can't express my question in words. Please look the code below, I hope you will understand my question.
I have a class and an interface as shown below.
class MyInterface
{
public:
    virtual ~MyInterface(){}
    virtual void print() = 0;
};
class MyClass : public MyInterface
{
public:
    MyClass(){}
    ~MyClass(){}
    void print()
    {
       printf("Hello World\n");
    }
};
Now here's my question.
MyClass* myclass = new MyClass();
myclass->print(); //will print "Hello World"
MyInterface* pMyInterface = (MyInterface*)myclass;
pMyInterface->print();
Will the second call print Hello World as well? If yes, then why?
 
     
    