C++ 多态练习

学完虚函数与多态,需要多加练习巩固这一面向对象的重要特征的知识点,我就自己做了个小练习
由于想写两个人之间的关系,所以先定义一个抽象类:

class People
{
public:
	People(char * name1) { name = name1;}
	virtual ~People() { cout << name << " was gone" << endl; }
	virtual void chase(People *) = 0;	//追求方法
	char * getName() { return name; }	
protected:
	char * name;
};

再根据定义的人类派生出男人类与女人类:

class Man:public People
{
public:
	Man(char * name, People * other = NULL) :People(name) {partner = other;}
	~Man() { cout << "Best wishes to u,my " << partner ->getName() << endl; partner = NULL; }
	void getTogether(People * TP) override	{ partner = new Man(TP->getName(), this); }
	void chase(People * Pname)override
	{
		cout << name << " loves " << Pname->getName() << endl;
		partner = Pname;
		Pname->getTogether(this);
	}
private:
	People* partner;
};

class Woman:public People
{
public:
	Woman(char * name, People * other = NULL) :People(name) { partner = other; }
	~Woman() { cout << "My love will go on,dear " << partner->getName() << endl; }
	void getTogether(People * TP) override { 	partner = new Man(TP->getName(),this); }
	void chase(People * Pname)override
	{
		cout << name << "loves" << Pname->getName() << endl;
		partner = Pname;
		Pname->getTogether(this);
	}
private:
	People* partner;
};

最后在主方法创建对象看下效果:

void main() {
	People *a = new Man("Jack");
	People *b = new Woman("Rose");
	a->chase(b);
	delete a;
	delete b;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值