Quick actions

cmd+k|ctrl+k

Navigation

Languages

Multiple_Inheritance_Upcast

Snippet info

Language

Cpp

Visibility

public

Author

740243525

Created

2019-12-23T13:50:25Z

Updated

2019-12-23T13:50:25Z

#include <cstdio>
using namespace std;

class BaseA{
public:
    virtual void foo()=0;
};
class BaseB{
public:
    virtual void bar()=0;
};
class Derived : public BaseA, public BaseB {
public:
    void foo(){
        printf("foo!\n");
    }
    void bar(){
        printf("bar!\n");
    }
};
int main() {
    Derived* derived=new Derived;
    BaseA* basea=derived;
    BaseB* baseb=derived;
    // 多继承导致basea和baseb不一样
    printf("%p %p %p\n", (void*)derived, (void*)basea, (void*)baseb);
    return 0;
}
INFO