c++基础 | 纯虚函数和抽象类

文章目录


纯虚函数

  • 基类声明不定义,派生类根据需求定义
  • 为各个派生类提供了公共界面

形式:virtual XXX =0;

具有纯虚函数的类称为抽象类,抽象类的性质如下:

  • 不能实例化对象
  • 不能做函数返回值
  • 不能做函数形参
  • 可以定义类指针
  • 可以声明类引用

派生类继承抽象类怎么转换成非抽象类

#include <iostream>

class Parent
{
public:
	virtual void fun1() = 0;
	virtual void fun2() = 0;
};

class Child :public Parent
{
public:
	// 1. 在派生类中对纯虚函数重新声明
	void fun1();
	void fun2();
};

// 2. 提供纯虚函数的定义
void Child::fun1(){
}

void Child::fun2(){
}

抽象类在多继承中的应用

class Interface1
{
public:
	virtual void print() = 0;
	virtual int add(int a, int b) = 0;
};

class Interface2
{
public:
	virtual void print() = 0;
	virtual int add(int a, int b) = 0;
	virtual int minus(int a, int b) = 0;
};

class Parent
{
public:
	int a;
};

class Child :public Interface1, public Interface2, public Parent
{
public:
	void print()
	{
		cout << "chlid cout" << endl;
	}
	int add(int a, int b)
	{
		return a + b;
	}
	int minus(int a, int b)
	{
		return a - b;
	}
};


int main()
{
	Child c;
	c.print();
	cout << c.add(3, 5) << endl;
	cout << c.minus(4, 6) << endl;

	Interface1* p1 = &c;
	Interface2* p2 = &c;
	cout << p1->add(7, 8) << endl;
	cout << p2->add(7, 8) << endl;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值