#include <iostream>
#include<string>
#include<exception>
#include"ClassBase.h"
#include"ClassDerived.h"
using namespace std;
class Base1Class
{
public:
Base1Class(const string s) {}
virtual void method1() { cout << "from base1"<<endl; };
};
class Base2Class
{
public:
Base2Class(const string s) {}
virtual void method1() { cout << "from base2" << endl; };
};
class DerivedClass :public Base1Class,public Base2Class
{
using Base1Class::Base1Class;
using Base2Class::Base2Class; //
public:
// this is must be added,without this,the instance can not detect which to choose
DerivedClass(const string s) :Base1Class(s), Base2Class(s) {};
};
int main()
{
DerivedClass d("s");
DerivedClass* dp = new DerivedClass("sss00");
Base1Class* b1s = dp;
b1s->method1();
Base2Class* b2s = dp;
b2s->method1();
auto dp1 = make_shared<DerivedClass>("nn");
shared_ptr<Base1Class> b1 = dp1;
b1->method1();
shared_ptr<Base2Class> b2 = dp1;
b2->method1();
}
c++ 多继承
最新推荐文章于 2020-12-10 13:26:57 发布