c++多重继承+虚函数表

来源:互联网 发布:天天特价9.9淘宝网 编辑:程序博客网 时间:2024/06/05 10:00





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;
}

0 0
原创粉丝点击