C++中 抽象类和虚基类用途上有什么区别
2个回答
展开全部
语法上有抽象类和虚基类,不等于你一定要用它。花里胡哨的东西,我通常不用。
我能想到的抽象类用处,大概这个优点可以用一用:
含有纯虚函数的类都是抽象类。基类中实际上并不使用这个函数,它只是通知编译系统:
在这里声明一个虚函数,留待在派生类中定义。为一个类族提供一个公共接口。
例如,计算平面形状的面积,抽象类 基类中 virtual float area( ) const =0;
派生类三角形,派生类圆 各自定义了 area( ) 具体的计算。一旦有了派生的三角形或圆,我们可以用同样的函数名.area( ) 计算面积。
虚基类,它的构建要在派生类里做,而且先于派生类自己的构建。当有派生类1,派生类2,生成的派生类12时,派生类12只执行一次虚基类的构建。虚基类的对象只有唯一一个。至于它有什么特殊用途,没想到。
我能想到的抽象类用处,大概这个优点可以用一用:
含有纯虚函数的类都是抽象类。基类中实际上并不使用这个函数,它只是通知编译系统:
在这里声明一个虚函数,留待在派生类中定义。为一个类族提供一个公共接口。
例如,计算平面形状的面积,抽象类 基类中 virtual float area( ) const =0;
派生类三角形,派生类圆 各自定义了 area( ) 具体的计算。一旦有了派生的三角形或圆,我们可以用同样的函数名.area( ) 计算面积。
虚基类,它的构建要在派生类里做,而且先于派生类自己的构建。当有派生类1,派生类2,生成的派生类12时,派生类12只执行一次虚基类的构建。虚基类的对象只有唯一一个。至于它有什么特殊用途,没想到。
展开全部
虚基类是相对于它的派生类而言的,它本身可以是一个普通的类。
只有它的派生类虚继承它的时候,它才称作虚基类,如果没有虚继承的话,就称为基类。比如类B虚继承于类A,那类A就称作类B的虚基类,如果没有虚继承,那类B就只是类A的基类。
虚继承主要用于一个类继承多个类的情况,避免重复继承同一个类两次或多次。
例如 由类A派生类B和类C,类D又同时继承类B和类C,这时候类D就要用虚继承的方式避免重复继承类A两次。
而抽象类是指带有有一个或一个以上的纯虚函数的类。抽象类一般值用于继承,不能定义类对象,但可以定义类指针和引用
只有它的派生类虚继承它的时候,它才称作虚基类,如果没有虚继承的话,就称为基类。比如类B虚继承于类A,那类A就称作类B的虚基类,如果没有虚继承,那类B就只是类A的基类。
虚继承主要用于一个类继承多个类的情况,避免重复继承同一个类两次或多次。
例如 由类A派生类B和类C,类D又同时继承类B和类C,这时候类D就要用虚继承的方式避免重复继承类A两次。
而抽象类是指带有有一个或一个以上的纯虚函数的类。抽象类一般值用于继承,不能定义类对象,但可以定义类指针和引用
参考资料: http://zhidao.baidu.com/question/73792183.html
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询