欢迎光临
我们一直在努力

C 抽象类 和纯虚函数详解,抽象类必有纯虚函数

这里写目录标题 纯虚函数的描述抽象类的描述

纯虚函数的描述

在class或者struct中,的函数,只定义了函数类型,但是没有函数体,并且给函数初始化 = 0 如下: speak()和run()就是2个纯虚函数

class Person{public: virtual void speak() = 0;//纯虚函数,只定义了函数类型,没有函数体.相当于oc和swift中的协议里定义的方法 virtual void run() = 0;}; 抽象类的描述

C++相当于oc和swift中的协议,不能直接创建类,C++中的抽象类,是只要包含一个纯虚函数,就是抽象类
上面代码 Person类就是抽象类,因为里面包含了纯虚函数.下面代码因为Student没有把父类中的所有纯虚函数都实现,所以依然是抽象类,不能用来创建对象

class Student: public Person{public: void speak() { cout<< “Student speak()”<<endl; } //student 没有完全实现纯虚函数,依然是抽象类 ,不能创建对象};

下面代码,Worker实现了所有父类中的纯虚函数,所以不是抽象类,可以被初始化.

class Worker: public Person{public: void speak() { cout<< “Worker speak()”<<endl; } //student 没有完全实现纯虚函数,依然是抽象类 ,不能创建对象 void run() { cout<< “Worker run()”<<endl; }}; Person s = Person();//报错,抽象类不能创建对象Student s = Student();//报错 1student 没有完全实现纯虚函数,依然是抽象类 ,不能创建对象Worker w = Worker();//实现了所有的纯虚函数,不再是抽象类,可以创建对象

关于抽象类的作用,跟oc和swift的协议一样,只是声明方法用,在oc和swift中可以用来继承多个协议.相当于继承了多个父类,只不过父类必须是协议.

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。