class parent1
{
public:
virtual void print1() = 0;
virtual void print2() = 0;
};
class parent2
{
public:
virtual void print3() = 0;
virtual void print4() = 0;
};
class child1:public parent1,public parent2
{
public:
void print1()
{
cout << "print1" << endl;
}
void print2()
{
cout << "print2" << endl;
}
void print3()
{
cout << "print3" << endl;
}
void print4()
{
cout << "print4" << endl;
}
};
int main()
{
void* t = (void*)new child1();
parent2* p2 = (parent2*)t; //无类型信息,t不能直接转换为parent2,成员访问都会错位
cout << t << endl;
cout << p2 << endl; // t == p2
p2->print3(); //"print1"
/
child1* c = new child1();
p2 = c; //编译器根据类型做了地址偏移,赋值后p2 != c
cout << c << endl;
cout << p2 << endl; // t != p2
p2->print3(); //"print3"
getchar();
return 0;
}