【一天一篇CPP】多态性和虚函数和虚析构函数和纯虚函数和抽象类

本文探讨了C++中的多态性概念,包括静态多态性和动态多态性,重点讲解了虚函数、虚析构函数的作用和使用规范。虚函数允许基类指针调用派生类的重定义函数,而虚析构函数确保正确销毁派生类对象。此外,介绍了纯虚函数和抽象类,它们在创建类层次结构时起到关键作用。
摘要由CSDN通过智能技术生成

1. 什么是多态性?多态性是面向对象的一个重要特征。向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为【例如:上课了,学生上课,程序员在敲代码;下课了,学生下课,程序员还在敲代码。开玩笑的】。

其实我们也接触了一些多态性的例子,例如函数的重载、运算符重载、模板等...

从系统实现的角度,多态性分为两类:静态多态性【函数重载和运算符重载和模板属于这一类,静态多态性是编译时决定的,也叫编译时的多态性】。动态多态性是程序运行时才动态确定操作所针对的对象,又称为运行时的多态性,它是通过虚函数 (virtual function)实现的

从编译器的角度,静态多态性就是静态关联【早期关联】,动态多态性就是动态关联【滞后关联】。

2. 一个虚函数【动态多态性,只可用于类族中的成员函数】的例子:


#include <iostream>
#include <string>
using namespace std;

class A{
public:
	virtual void COUT(){ cout << "In A" << endl; }
};

class B :public A{
public:
	void COUT(){ cout << "In B" << endl; }
};

int main()
{
	A a1;
	B b1;
	A *ap = &a1;
	ap->COUT();

	ap = &b1;
	ap->COUT();

}
我们知道下面这个例子会输出" In A " "In A",不懂可以看我的上一篇博客。


但是在class A的void COUT()函数前加上"virtual"关键字,结果将会输出"In A"  " In B ",这就是虚函数的作用,由于它是指向B类的对象b1的,所以通过虚函数,它会使用派生类的该函数。【这是基类指针访问派生类对象的函数的例子,但是通过基类对象是无论如何都访问不了派生类非公有的成员的】


3. 虚函数使用规范

A .CPP规定,当一个成员函数被声明为虚函数【类外定义成员函数的时候不能加上 "virtual" 关键字】后,其派生类的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值