对于C++多态性的认识

2018/5/13

1.说在前面:

项目大体上解决了,现在可以腾出时间来优化项目和学习新的知识

2.C++多态性

1.简述:(多态)polymorphism

       对于C++的多态性,这是一项很灵活的技术,用法十分灵巧,有难度;简单来说:多态性就是适当的使用接口函数,通过一个接口来使用多种方法,(相当于上级说一个命令,A,B,C,D等人都做出反应,一个命令,多个反应;

2.怎样实现多态性

1.采用虚函数和指针来实现多态性

通过虚函数来定义要实现的方法,通过基类的指针指向不同的子类的虚函数方法

2.多态性的优点是实现接口的重用

3.虚函数:

1.虚函数采用关键字virtual修饰,虚函数允许子类重新去定义成员函数;

2.重写(函数名一致,但是内容不一致)//又称覆盖(override)

3.重载(函数名一致,但是参数表列不一致)

4.多态性一般就是通过对虚函数进行重写,然后用基类指针指向不同的子对象,调用不同的虚函数

4.代码实现

#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
class Ishape
{
public:
	//多态性实现需要虚方法
	virtual double get_Area() = 0;
	virtual string get_Name() = 0;
};
//定义类1 CCircle
class CCircle :public Ishape
{
	//声明的时候需要带上Virtual关键字 显示多态性
public:
	CCircle(double radius) {this->c_radius = radius;}
	CCircle(){}
	virtual double get_Area();
	virtual string get_Name();
private:
	double c_radius;//定义圆的半径

};
//定义方法

double CCircle::get_Area()
{
	return 3.14*c_radius*c_radius;
}
string CCircle::get_Name()
{
	return "CCircle";
}
class CRect :public Ishape
{
public:
	CRect(double length, double width) { this->m_length = length, this->m_width = width;}
	CRect(){};
	virtual double get_Area();
	virtual string get_Name();
private:
	double m_length;
	double m_width;
};
double CRect::get_Area()
{
	return m_length*m_width;
}
string CRect::get_Name()
{
	return  "Rectangle";
}

//通过指针指向不同的类从而使用不同的方法
#include"text.h"


void main()
{
	Ishape *point = NULL;//建立指针
	point = new CCircle(10);
	//圆类


	cout << point->get_Name() << "的面积是:" << point->get_Area() << endl;
	delete point;
	//矩形类
	point = new CRect(10, 20);
	cout << point->get_Name() << "的面积是:" << point->get_Area() << endl;
	delete point;
	system("pause");
}








	




	


	
	









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值