为了账号安全,请及时绑定邮箱和手机立即绑定

C++中 继承与多态区别?

C++中 继承与多态区别?

C#
幕布斯6054654 2019-03-06 11:07:12
C++中 继承与多态区别
查看完整描述

4 回答

?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

继承是指,子类可以自动获得父类提供的函数,如父类提供了foo函数,则子类也会有foo函数
多态是指,子类可以重写父类的某个函数,从而为这个函数提供不同于父类的行为。一个父类的多个子类可以为同一个函数提供不同的实现,从而在父类这个公共的接口下,表现出多种行为
当然,以上的自动获得和重写,还存在一个访问级别的概念。比如public的函数或者protected的函数才能被重写这类的限制。

查看完整回答
反对 回复 2019-03-31
?
慕哥6287543

TA贡献1831条经验 获得超10个赞

C++的继承和多态的区别
继承:是指子类按照一定方式继承基类的成员及函数。
如果此时定义一个基类的指针,并把子类的对象传给这个基类指针.假如子类和基类都有一个相同函数。那么这个指针调用这个函数则到底调用的是基类的函数还是子类的函数呢?答案是:基类的函数。因为函数的调用取决于基类的指针类型,而不是取决于指针指向的对象类型。
如下:
Class shape
{
shape();
~shape();
display(); //画一个多边形
}
Class CRect:public shape
{
CRect();
~CRect();
display(); //画一个矩形
}
shape* pshape;
CRect rct;
pshape=&rct; //指向子类对象,最好不要用一个子类指针指向一个基类对象,因为这样危险性大.
pshape->display(); //它调用的仍然是基类的shape的display函数即画一个多边形以上的这种特性就是函数的一般性,即指针调用的函数取决于指针类型,而不取决于指向的对象类型。假如这个基类派生了很多子类,且每个子类都定义了个函数对基类的函数进行覆盖,此时多个基类指针指向不同子类对象,调用子类的覆盖函数,则这些指针的行为都是一样的,即都是调用基类的函数而不是子类相对应的函数。
从上可以看出,这种特性并不具有多态性,因为它不会自动随着指向的对象而调用对象的函数。那么如何能实现这种特性呢?这时就需要一种技术,即虚函数。虚函数是实现多态性的方法。
虚函数就是在函数的前面加上一个Virtual即可。
虚函数中有一种比较特别:纯虚函数
它的目的:纯虚函数不能定义函数的实际动作,它的存在只是为了在衍生类别中对它能够进行重新定义,实现实态特性.
它的定义方式: virtual 函数类型 函数名(参数)= 0; //一定要“= 0”
它的约束:如果一个类中有纯虚函数,则这个类叫做抽象类,它是不能定义对象的。

 


查看完整回答
反对 回复 2019-03-31
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞


  一,两者的定义不同:
  1,C++多重继承:一个派生类指定多个基类,这样的继承结构被称做多重继承

  2,多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,多态(polymorphism),字面意思多种形状,多态的目的则是为了接口重用。
  二,两者的继承形式不同:
  1,多重继承的一般形式为:
class类名l:访问控制类名2,访问控制类名3,…访问控制类名n
(
…//定义派生类自己的成员
};
  2,C++中,多态性分为两种,一种称为编译时多态,另一种为运行时多态
  (1)编译时多态,也就是函数重载,所谓函数重载是指同一个函数名可以对应着多个函数的实现,具体调用哪个按照由参数个数,参数类型等来决定;
  (2)运行时多态,就是虚函数:在定义了虚函数后,可以在基类的派生类中对虚函数重新定义,以实现你所想要的功能;比如:
class A {
public:virtual void test() {...}
void display(){...}
};
class B :public A {
public:virtual void test() {...}
void display(A& a){ a.display(); }
};
那么:
A* a = new A();
a->test();调用的是基类的
A* b = new B();
b->test();调用的是派生类的.
如果在A中不申明virtual,
那么:
A* b = new B();
b->test(); 会调用基类的。



查看完整回答
反对 回复 2019-03-31
  • 4 回答
  • 0 关注
  • 658 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信