#include
using namespace std;
class Animal
{
private:
public:
virtual void eat(void){cout<<"eat"<eat();
}
void func2(Animal& p){不同的对象进来做不同的事,多态
p.eat();
}
int main()
{
Pig pig;
Dog dog;
Mankind man;
func2(pig);
func2(dog);
func2(man);
return 0;
}
virtual 返回类型 函数名(参数列表):通常情况下只有返回类型 函数名 参数列表都相同的函数才能构成多态,除了这一种特殊的函数,返回类指针
类* 函数名(参数列表)
#include
using namespace std;
class Animal
{
private:
public:
virtual Animal* eat(void)
{
cout << "Animal eat" << endl;
return this;
}
};
class Mankind : public Animal
{
private:
public:
Mankind* eat(void)
{
cout << "man eat rice" << endl;
return this;
}
};
int main()
{
Animal a;
a.eat();
Mankind man;
Animal* p = &man;
p->eat();
return 0;
}
糟糕,内存泄漏了
#include
using namespace std;
class Animal
{
private:
public:
Animal(){cout<<"构造Animal"<
虚析构函数概念的引入
#include
using namespace std;
class Animal
{
private:
public:
Animal(){cout<<"构造Animal"<