c++中的抽象类

Posted uestclr

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++中的抽象类相关的知识,希望对你有一定的参考价值。

在面向对象的编程过程中,有些类的创建是毫无意义的,它的概念是抽象的,比如动物,电器,人这样类,比如到商店给店员说我要买一台电器。编程过程中可以将这些类设置为抽象类,以防止它们创建对象。


只要一个类中出现纯虚函数,那么这个类就是抽象类。

Class Animal

         Public:

virtual void show() = 0;//纯虚函数的表达

;

抽象类除了不能实例化之外,和其他类没有任何区别。

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

class Animal
	string name;
	int age;
public:
	Animal(string name = "",int age=0):name(name),age(age)
		//cout << ""
	
	/*纯虚函数*/
	virtual void fun() = 0;
	/*普通函数*/
	void show()
		cout << name<<":"<<age<<endl;
	
;

class Dog:public Animal
public:
	void fun()
		cout << "dog fun()"<<endl;
	
	Dog(string name = "",int age = 0):
		Animal(name,age)
;
int main()
	//Animal a;
	Dog dog("haha",6);//子类也会有纯虚函数,子类也是抽象类,所以子类必须实现抽象类
	dog.show();
值得注意的是,在继承一个抽象类中,如果不在派生类中重写这个方法的话,那么派生类依然会有父类的纯虚函数,此时派生类还是一个抽象类。所以要使得派生类可以创建对象,则要重写父类的纯虚函数。


纯抽象类:除了构造函数和析构函数之外的其他函数都是纯虚函数,这样的类就是纯抽象类。有意思的是,学过java的人其实应该比较清楚,java中不支持多继承,但是java却通过接口的方式实现了多继承所要达到的目的。java中的接口其实本质上就是c++中的纯抽象类。

以上是关于c++中的抽象类的主要内容,如果未能解决你的问题,请参考以下文章

弄清楚是啥让 VS2008 中的 C++ 类抽象

第52课 C++中的抽象类和接口

是啥使某物成为 C++ 中的抽象类 [重复]

C++ 撤消/重做实现中的抽象类问题

派生自抽象基类并调用另一个类中的方法的 C++ 包装类,该类也派生自抽象基类

C ++中的抽象类与接口[重复]