c++中的抽象类

来源:互联网 发布:放置类挂机游戏源码 编辑:程序博客网 时间:2024/06/14 04:55

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


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

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++中的纯抽象类。

0 0
原创粉丝点击