纯虚函数、抽象类、多态

本文详细介绍了C++中的纯虚函数及其在抽象类中的应用,强调了抽象类不能实例化只能被继承的特点。同时,讨论了多态的概念,包括函数重写和实现多态的步骤,并通过示例展示了如何使用多态调用派生类的成员函数。最后,通过一个实际的代码示例展示了多态的实现过程及其运行结果。
摘要由CSDN通过智能技术生成

纯虚函数

纯虚函数是只需声明,不需要定义的虚函数。
 声明方式:class  类名
 					{
						virtual 返回类型 函数名(参数列表)=0;
					};	

抽象类

有纯虚函数的类被称为抽象类。
抽象类无法通过构造函数直接生成对象,只能够被派生类继承。
当抽象类被继承时,该类的所有纯函数必须在子类中重写,否则子类也将称为一个抽象类。

Animal.h

#ifndef _ANIMAL_H
#define  _ANIMAL_H

class Animal 
{
public:
	virtual void eat();
};

class Cat:public Animal
{
public:
	virtual void eat();
};
#endif

Animal.cpp

#include"Animal.h"
#include <iostream>
using namespace std;

void Cat::eat()
{
	cout<<"eat fish"<<endl;
}

main.cpp

#include"Animal.h"
#include <iostream>
using namespace std

int main(int arg,char **argv)
{
	//Animal animal(100,5);不可以这样调用,不然出现下图报错问题

	Cat cat; 
	cat.eat();
	return 0;
}

运行结果
在这里插入图片描述

多态

概念:在面向对象语言中,接口的多种不同实现方式。
多态能允许将父对象设置成一个或更多个它的子对象的技术,赋值之后父对象就可以根据当前赋值给它的子对象的特性进行运作。可以简单地理解为:将基类对象的指针或引用绑定到派生类对象上,此时基类的指针或引用就可以拥有派生类的特性。

函数重写实现多态

实现多态的步骤:
第一步:派生类重写基类的虚函数。
第二步:积累的指针或引用绑定到派生类的对象上。
第三步:通过基类的指针或引用调用所绑定派生重写过的函数。
Animal.h

#ifndef _ANIMAL_H
#define  _ANIMAL_H

class Animal 
{
public:
	virtual void eat();
};

class Cat:public Animal
{
public:
	virtual void eat();
};

class Dog:public Animal
{
public:
	virtual void eat();
};
#endif

Animal.cpp

#include"Animal.h"
#include <iostream>
using namespace std;

void Cat::eat()
{
	cout<<"eat fish"<<endl;
}

void Dog::eat()
{
	cout<<"eat meat"<<endl;
}
#include"Animal.h"
#include <iostream>
using namespace std

void animalEat(Animal* animal)
{
	animal->eat();
}

int main(int arg,char **argv)
{
	Dog dog;
	animalEat(&dog);
	Cat cat
	animalEat(&cat);
	
	return 0;
}

运行结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值