关于多态,刚才看了好几个,有的错误很多

什么叫做多态,及同名函数不同的实现形式

多态分成动态多态和静态多态

静态多态:例如函数重载,是允许参数列表不一样的,也不需要继承关系。

动态多态:形成的必要条件:1:首先要有继承关系

2:父类中含有虚函数(及是加virtual修饰,但是构造函数不能加virtual)

3:使用父类指针或者引用,指向或者引用子类对象

满足以上三点才能形成动态多态,及我们平常说的”多态“

这个动态多态是不允许出现参数列表父子不一样的,如果不一样就会报错,子类中的函数是对父类中虚函数的重写(这个和静态多态不一样)

多态实例:

#include <iostream>

using namespace std;

class Person

{ private: string _name; int _age;

public: Person(string name , int age)

{ this->_name = name; this->_age = age; }

//virtual就是虚属性的修饰符。

virtual void showInfo()

{ cout << "姓名" << this->_name <<",年龄:" << this->_age << endl; } string getName() { return this->_name; } int getAge() { return this->_age; }

};

class Stu : public Person

{ private: int _id; public: Stu(string name, int age,int id):Person(name,age),_id(id)

{ }

//override关键字:是用检查重写的函数的返回值与形参列表是否与父类中的函数保持一致。 //如果不一致则直接报错。

//这个重写函数也是一个虚函数。如果出现再次继承,这个函数也可以进行再次重写,到继承类中的重写函数使用final关键字才结束。

void showInfo() override

{ cout <<"学号"<< this->_id << ", 姓名" << this->getName() <<",年龄:" << this->getAge() << endl; } };

int main()

{ Person* p = new Stu("zhangsan",18,1001); p->showInfo(); return 0; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值