C++_纯虚函数and抽象类

介绍

本文主要介绍 纯虚函数 和 抽象类

纯虚函数

直接看源码吧,纯虚函数样式为:virtual 类型 函数名(参数表) = 0;

源码

#include<iostream>
#include<string>
using namespace std;
class A
{
public:
	//纯虚函数(仅做接口调用使用)
	virtual void Test(string) = 0;
};
class B :public A
{
public:
	void Test(string a){ cout << a << "Test" << endl; }
};
void main()
{
	//基类指针
	A *p = new B;
	p->Test("测试结果:"); 
	system("pause");
}

运行结果

测试结果:Test
请按任意键继续. . .

抽象类

1.至少拥有一个 纯虚函数的类 称为抽象类
2.抽象类 不能实例化为对象
(PS:基类对象无法实例化,只能用 基类指针来指向不同的子类)
3.抽象类子类 必须对 基类中全部纯虚函数 提供有效覆盖,否则子类也是抽象类

  • 抽象类的使用
    例如 有几台不同品牌电视机,每一种品牌都有专属的显示方法(传输方法),将品牌分成多个子类进行区分
    1.我们只需要 创建一个抽象类
    2.创建一个相同名字成员的 纯虚函数 作为显示(传输)的调用方法
    3.这样使用 基类指针去指向不同的子类 则会调用不同的显示(传输)方法

源码

#include<iostream>
#include<string>
using namespace std;
//抽象类(至少拥有一个 纯虚函数的类 称为抽象类)
class A
{
public:
	//纯虚函数(仅做接口调用使用)
	virtual void Test(string) = 0;
};
class B :public A
{
public:
	//测试函数
	void Test(string a){ cout << a << "B" << endl; }
};
class C :public A
{
public:
	//测试函数
	void Test(string a){ cout << a << "C" << endl; }
};
void main()
{
	//基类指针
	A *p = new B;
	p->Test("测试结果:"); 
	delete p;//销毁 new 空间

	//基类指针
    p = new C;//改变基类指针指向 子类C
	p->Test("测试结果:");
	delete p;//销毁 new 空间

	system("pause");
}

运行结果

测试结果:B
测试结果:C
请按任意键继续. . .

纯抽象类(俗称:接口类)

全部由 纯虚函数 构成的抽象类,称为 纯抽象类

#include<iostream>
#include<string>
using namespace std;
//纯抽象类(全部由 纯虚函数 构成的抽象类)
class A
{
public:
	//纯虚函数(仅做接口调用使用)
	virtual void Test(string) = 0;
	//纯虚函数(仅做接口调用使用)
	virtual void foo(string) = 0;
};
//子类 B
class B :public A
{
public:
	//测试函数
	void Test(string a){ cout << a << "B" << endl; }
	void foo(string str)
	{
		cout << str << endl;
	}
};
//子类 C
class C :public A
{
public:
	//测试函数
	void Test(string a){ cout << a << "C" << endl; }
	void foo(string str)
	{
		cout << str << endl;
	}
};
void main()
{
	//基类指针
	A *p = new B;
	p->Test("测试结果:"); 
	p->foo("B");
	delete p;//销毁 new 空间

	//基类指针
    p = new C;//改变基类指针指向 子类C
	p->Test("测试结果:");
	p->foo("C");
	delete p;//销毁 new 空间

	system("pause");
}
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值