c++抽象类中纯虚函数的理解

纯虚函数:纯虚函数就在基类中只是定义并不实现,需要在派生类中继承并且实现。纯虚函数的意义就是将派生类的共同特性提取出来。

虚函数和纯虚函数的区别:虚函数在基类中有实现,并且派生类无需一定要继承,派生类可以继承并且重写,实现多态。

抽象类:一个类中含有一个或者多个纯虚函数,那么这个类就是抽象类。不能实例化对象,只能定义指针,指向派生类以实现多态。

代码示例:

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

// test.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#pragma warning(disable:4996)
#include <string>

using namespace std;

/*一个类中含有一个或者多个纯虚函数,那么这个类就是抽象类。
纯虚函数的意义就是将派生类的共同特性提取出来
*/
class coder{
public:
	virtual void sleep() = 0;
							//不能实例化对象,只能定义指针,指向派生类以实现多态。
							//纯虚函数就像这个类中描述的一样,只是定义并不实现,需要在派生类中继承并且实现。
							/*虚函数和纯虚函数的区别是:虚函数在基类中有实现,
							并且派生类无需一定要继承,派生类可以继承并且重写,实现多态*/
	virtual void eat() = 0;
	virtual void code() = 0;
};

class c_coder :public coder{
public:
	void sleep(void){
		cout << "c_coder sleep" << endl;
	}
	void eat(void){
		cout << "c_coder eat" << endl;
	}
	void code(void){
		cout << "c_coder code" << endl;
	}
};

class cpp_coder :public coder{
public:
	void sleep(void){
		cout << "cpp_coder sleep" << endl;
	}
	void eat(void){
		cout << "cpp_coder eat" << endl;
	}
	void code(void){
		cout << "cpp_coder code" << endl;
	}
};
int main(int argc, char *argv[])
{
	//coder coder0;  //此处报错,不允许使用抽象类
	coder *pcoder0;//这里就是可以的,这个指针可以指向派生类实现多态
	c_coder a;
	cpp_coder b;

	pcoder0 = &a;
	pcoder0->code();
	pcoder0->eat();
	pcoder0->sleep();

	pcoder0 = &b;
	pcoder0->code();
	pcoder0->eat();
	pcoder0->sleep();

	return 0;

}

执行结果:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值