c++覆盖,重载,多态

来源:互联网 发布:新加坡俊知集团 编辑:程序博客网 时间:2024/06/11 16:22

 

覆盖:在基类中定义了一个非虚拟函数,然后在派生类中又定义了一个同名同参数同返回类型的函数,这就是覆盖了。
在派生类对象上直接调用这个函数名,只会调用派生类中的那个。
重载:在基类中定义了一个非虚拟函数,然后在派生类中定义一个同名,但是具有不同的参数表的函数,这就是重载。
在派生类对象上调用这几个函数时,用不同的参数会调用到不同的函数,有可能会直接调用到基类中的那个。多态:(动态多态)在基类中定义了一个虚拟函数,然后在派生类中又定义一个同名,同参数表的函数,这就是多态。
多态是这3种情况中唯一采用动态绑定技术的一种情况。也就是说,通过一个基类指针来操作对象,
如果对象是基类对象,就会调用基类中的那个函数,如果对象实际是派生类对象,就会调用派声类中的那个函数,
调用哪个函数并不由函数的参数表决定,而是由函数的实际类型决定。
覆盖:同方法(即方法名参数类型及个数都相同的方法)的在派生类中对父类的重写。覆盖==重写==override;
重载:同名方法(即方法名相同但参数类型或个数不同的方法)在同一个类中的定义。重载==overload;
c++中只有声明为virtual的函数才具有动态多态性。java默认为动态多态性。

 

原创粉丝点击