C++多继承,指针

来源:互联网 发布:excel多表格数据联动 编辑:程序博客网 时间:2024/06/05 18:22
#include<iostream>#include <string>using namespace std;class A{      public: int a;};class B{  public: int b;};class C: public A, public B{      public:int c;      };int main(){//    C* cc=new C();//    A* aa=dynamic_cast<A*>(cc);//    B* bb=dynamic_cast<B*>(cc);    C* cc=new C();    A* aa=(A*)cc;    B* bb=(B*)cc;    //if (aa==bb) cout<<"aa==bb"<<endl;编译错误    if (aa==cc) cout<<"aa==cc"<<endl;    if (bb==cc) cout<<"bb==cc"<<endl;    //A* aa=(A*)bb;    cout<<cc<<bb<<aa<<endl;    system("pause");} 

aa==cc
bb==cc
0x5517e8
0x5517ec
0x5517e8
判断aa==cc时,其实是将aa转化为C*类型,然后判断,由于aa是cc指向的对象的A类型部分的首地址,所以aa转化为C*类型后就是指向cc所指向的对象的首地址,同理bb。恰巧aa的int值也就是地址值和cc相等,可是bb在cc所指向的对象分配的内存中间部分,它的地址值与cc是不等的

0 0
原创粉丝点击