A
aap
Hi,
I have the following code.
#include <iostream>
using namespace std;
class Root
{
public:
virtual void Root1() = 0;
virtual void Root2() = 0;
};
class A: public virtual Root
{
public:
virtual void Root1() {cout << "A.Root1" << endl;}
virtual void Root2() {cout << "A.Root1" << endl;}
virtual void A0() {cout << "A.A0" << endl;}
virtual void A1() {cout << "A.A1" << endl;}
virtual void A2() {cout << "A.A2" << endl;}
};
class B: public virtual Root
{
public:
virtual void B1() {cout << "B.B1" << endl;}
};
class Derived : public A, public B
{
virtual void D1() { cout << "Derived1() " << endl;}
};
void main()
{
Derived *d = new Derived;
void *f = d;
cout << "d->Root1" << endl;
d->Root1();
cout << "((Root *)f)->Root1()" << endl;
((Root *)f)->Root1();
}
I don't quite understand what happens when we cast d to void * and then
cast to (Root *) and invoke Root1(). But it prints "A.A0()".
Could someone please explain what is happening?
Thanks in advance.
I have the following code.
#include <iostream>
using namespace std;
class Root
{
public:
virtual void Root1() = 0;
virtual void Root2() = 0;
};
class A: public virtual Root
{
public:
virtual void Root1() {cout << "A.Root1" << endl;}
virtual void Root2() {cout << "A.Root1" << endl;}
virtual void A0() {cout << "A.A0" << endl;}
virtual void A1() {cout << "A.A1" << endl;}
virtual void A2() {cout << "A.A2" << endl;}
};
class B: public virtual Root
{
public:
virtual void B1() {cout << "B.B1" << endl;}
};
class Derived : public A, public B
{
virtual void D1() { cout << "Derived1() " << endl;}
};
void main()
{
Derived *d = new Derived;
void *f = d;
cout << "d->Root1" << endl;
d->Root1();
cout << "((Root *)f)->Root1()" << endl;
((Root *)f)->Root1();
}
I don't quite understand what happens when we cast d to void * and then
cast to (Root *) and invoke Root1(). But it prints "A.A0()".
Could someone please explain what is happening?
Thanks in advance.