Advertisement

研究C++中的多重继承机制及其与void*指针转换之间的关系

阅读量:

C++语言具备多重继承的功能,但该特性在实际应用中可能引发一些异常状况,此前我曾遭遇过一个与指针转换相关的典型案例,具有较强的代表性。

以下是一个简化的测试示例代码:

复制代码
    #include <iostream>
    using namespace std;
    
    class IA 
    {
    public:
    virtual ~IA(){}
    virtual void a() = 0;
    };
    
    class IB
    {
    public:
    virtual ~IB(){}
    virtual void b() = 0;
    };
    
    class CMulti : public IA, public IB
    {
    public:
    CMulti(){}
    ~CMulti(){}
    
    void a(){ cout << "C::a()" << endl; }
    void b(){ cout << "C::b()" << endl; }
    };
    
    void testCastA(void *p)
    {
    cout << "cast from void*(" << p << ")to IA*:  ";

全部评论 (0)

还没有任何评论哟~