18.1C++ 多态的应用

18.1C++ 多态的应用,第1张

18.1C++ 多态的应用
#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"< 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5593520.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存