64,632
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
class Base1
{
public:
Base1()
{
cout << "Base1::Base1()" << endl;
}
virtual ~Base1()
{
cout << "Base1::~Base1()" << endl;
}
virtual void speakClearly()
{
cout << "Base1::speakClearly()" << endl;
}
virtual Base1 *clone() const
{
cout << "Base1::clone()" << endl;
}
protected:
float data_Base1;
};
class Base2
{
public:
Base2()
{
cout << "Base2::Base2()" << endl;
}
virtual ~Base2()
{
cout << "Base2::~Base2()" << endl;
}
virtual void mumble()
{
cout << "Base2::mumble()" << endl;
}
virtual Base2 *clone() const
{
cout << "Base2::clone()" << endl;
}
protected:
float data_Base2;
};
class Derived : public Base1, public Base2
{
public:
Derived()
{
cout << "Derived::Derived()" << endl;
}
virtual ~Derived()
{
cout << "Derived::~Derived()" << endl;
}
virtual Derived *clone() const
{
cout << "Derived::clone()" << endl;
}
protected:
float data_Derived;
};
int main()
{
Base1 *pBase1=new Derived;
pBase1->clone();
pBase1->speakClearly();
//pBase1->mumble();//complie-time error
delete pBase1;
cout << "-----------------------------------" << endl;
Base2 *pBase2=new Derived;
pBase2->clone();
pBase2->mumble();
delete pBase2;
system("PAUSE");
return 0;
}
#include <iostream>
using namespace std;
class Base1
{
public:
Base1()
{
cout << "Base1::Base1()" << endl;
}
virtual ~Base1()
{
cout << "Base1::~Base1()" << endl;
}
virtual void speakClearly()
{
cout << "Base1::speakClearly()" << endl;
}
virtual Base1 *clone() const
{
cout << "Base1::clone()" << endl;
return (Base1*)this;
}
protected:
float data_Base1;
};
class Base2
{
public:
Base2()
{
cout << "Base2::Base2()" << endl;
}
virtual ~Base2()
{
cout << "Base2::~Base2()" << endl;
}
virtual void mumble()
{
cout << "Base2::mumble()" << endl;
}
virtual Base2 *clone() const
{
cout << "Base2::clone()" << endl;
return (Base2 *)this;
}
protected:
float data_Base2;
};
class Derived : public Base1, public Base2
{
public:
Derived()
{
cout << "Derived::Derived()" << endl;
}
virtual ~Derived()
{
cout << "Derived::~Derived()" << endl;
}
virtual Derived *clone() const
{
cout << "Derived::clone()" << endl;
return (Derived*)this;
}
protected:
float data_Derived;
};
#include "stdafx.h"
#include <iostream>
using namespace std;
class Base1
{
public:
Base1()
{
cout << "Base1::Base1()" << endl;
}
virtual ~Base1()
{
cout << "Base1::~Base1()" << endl;
}
virtual void speakClearly()
{
cout << "Base1::speakClearly()" << endl;
}
virtual Base1 *clone() const
{
cout << "Base1::clone()" << endl;
return NULL;
}
protected:
float data_Base1;
};
class Base2
{
public:
Base2()
{
cout << "Base2::Base2()" << endl;
}
virtual ~Base2()
{
cout << "Base2::~Base2()" << endl;
}
virtual void mumble()
{
cout << "Base2::mumble()" << endl;
}
virtual Base2 *clone() const
{
cout << "Base2::clone()" << endl;
return NULL;
}
protected:
float data_Base2;
};
class Derived : public Base1, public Base2
{
public:
Derived()
{
cout << "Derived::Derived()" << endl;
}
virtual ~Derived()
{
cout << "Derived::~Derived()" << endl;
}
virtual Derived *clone() const
{
cout << "Derived::clone()" << endl;
return NULL;
}
protected:
float data_Derived;
};
int main()
{
Base1 *pBase1=new Derived;
pBase1->clone();
pBase1->speakClearly();
//pBase1->mumble();//complie-time error
delete pBase1;
cout << "-----------------------------------" << endl;
Base2 *pBase2=new Derived;
pBase2->clone();
pBase2->mumble();
delete pBase2;
system("PAUSE");
return 0;
}