- UID
 - 2198
 
 注册时间2005-6-29
阅读权限255
最后登录1970-1-1
副坛主 
    
 
 
 
该用户从未签到  
 | 
 
 
 楼主 |
发表于 2010-1-28 02:20:47
|
显示全部楼层
 
 
 
////////////////////////////////////////////////////////////////////// 
// A  
////////////////////////////////////////////////////////////////////// 
class A   
{ 
public: 
        A(int a); 
        virtual ~A(); 
public: 
        int m_a; 
        int GetData(); 
}; 
 
A::A(int a) 
{ 
        m_a = a; 
} 
 
A::~A() 
{ 
        m_a = 0 ; 
} 
 
int A::GetData() 
{ 
        return m_a; 
} 
 
////////////////////////////////////////////////////////////////////// 
// B 
////////////////////////////////////////////////////////////////////// 
class B : public A   
{ 
public: 
        B(int a,int b,int d); 
        virtual ~B(); 
public: 
        int m_b; 
        D Objd; 
        int GetData(); 
}; 
 
B::B(int a,int b,int d):Objd(d),A(a) 
{ 
        m_b = b; 
} 
 
B::~B() 
{ 
        m_b = 0; 
} 
 
int B::GetData() 
{ 
        return m_b; 
} 
 
////////////////////////////////////////////////////////////////////// 
// D 
////////////////////////////////////////////////////////////////////// 
class D   
{ 
public: 
        D(int d); 
        virtual ~D(); 
public: 
        int m_d; 
        int GetData(); 
}; 
 
D::D(int d) 
{ 
        m_d = d; 
} 
 
D::~D() 
{ 
 
} 
 
int D::GetData() 
{ 
        return m_d; 
} 
 
////////////////////////////////////////////////////////////////////// 
// main()  第一种玩法 对象调用其他类的方法 
////////////////////////////////////////////////////////////////////// 
 
int main(int argc, char* argv[]) 
{ 
        B theb(10,20,30); 
        cout<< theb.GetData() << endl; 
        cout<< ((A)theb).GetData() << endl; 
        cout<< ((D *)&theb)->GetData() << endl;     // 这个时候把 thea 的地址给D的成员函数玩 
        cout<< ((D *)&theb.m_a)->GetData() << endl; // 这个时候把 theb 的地址给D的成员函数玩 
        return 0; 
} |   
 
 
 
 |