021--C++多态的基本概念

简介:多态分为静态多态,和动态多态。多态这个概念通过类中的函数体现,那么对于函数要体现多态,就要在函数前加上关键字virtual,使得函数成为虚函数,这样我们才能在C++中了解多态机制。(简单来说多态的本质就是:对继承下来的函数进行新的改造。以此实现代码的复写。------你们全家要制造飞机,你爸爸制造了飞机的外形,你要在你爸爸的基础上制造飞机的引擎,你的儿子要在你的基础上学会如何驾驶飞机。

首先,对多态的静态和动态,我们先来进行理解:区分静态和动态的一个标准;在编译时知道运行结果的叫静态,在编译时不清楚,在运行时才知道结果的叫动态。

静态多态:彼此单独定义但支持共同操作的具体类。(如果不明白这个知识点,自己去百度)


虚函数:对于多态的表现,虚函数是我们了解的重点。类中的成员函数,并在返回值前加关键字virtual,这个成员函数就是虚函数。

  • 虚函数不能是内联,静态,友元函数(静态函数不是成员函数,不属于类)
  • 虚函数只能在声明中写。不能再函数调用时写。(即在函数前加不加virtual)
  • 虚函数无论被公有继承多少次,仍然保持虚函数的特性(虚函数被继承后还是虚函数)
  • 如果类中有一个成员函数被说明为虚函数,意味着在派生类中有这个同名函数的不同实现。
  • 定义了虚函数之后,程序中声明的指向基类的指针可以指向派生类的成员函数。

虚函数的特性:

  • 在类中有虚函数存在,不管有多少个virtual,类的内存多四个字节(指针)
  • 类中有虚函数存在,在这个类内存的前面的四个字节为函数指针数组,指向虚函数成员列表
  • 基类中有虚函数存在,那么派生类中的同名函数可以不用加关键字,但是它也是虚函数
  • 虚函数成员列表本身不能被继承,但这个虚函数的成员列表中的成员能够被继承
  • 派生类中如果有同名的虚函数,会覆盖掉继承下来的基类的列表成员(多态的重写)


类中的成员函数有两种访问方式

  • 如果没有虚函数,通过对象或对象指针的类型去访问
  • 如果有虚函数,通过类对象中的前面四个字节去访问(即虚函数列表的首地址)

纯虚函数:作为接口存在,有虚函数的类叫做虚基类

抽象基类不能实列化对象,只能通过派生类继承,在派生类中重写纯虚函数,如果派生类也不重写,那么派生类将继续作为抽象基类存在。

#include<iostream>
using namespace std;
class A{
public:
	virtual void run() = 0;
	int getA(int a){
		return a;
	}
};
class B :public A{
public:
	virtual void run() = 0;

};
int main(){
	
}


永远不要高看自己的记忆力······终于发现自己老了·························

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码字界陈冠希

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值