软件开发入门教程网之C++ 多态

更新时间:2025-05-12 00:06:23 阅读: 评论:0

<a href=http://www.ranqi119.com/ge/78/731953.html style=软件开发入门教程网之C++ 多态"/>

软件开发入门教程网之C++ 多态

多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,和谐校园手抄报就会用到多态。

C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。

下面的实例中,基类 Shape 被派生为两个捏泥人作文类,如下所示:

实例

#include <iostream>

using namespace std;

class Shape {

protected:

int width, height;

public:

Shape( int a=0, int b=0)

width = a;

height = b;

int area()

cout << "Parent class area :" <<endl;

return 0;

class Rectangle: public Shape{

public:

Rectangle( int a=0, int b=0):Shape(a, b) { }

展开全文

int area ()

cout << "Rectangle class area :" <<endl;

return (width * height);

class Triangle: public Shape{

public:

Triangle( int a=0, int b=0):Shape(a, b) { }

int area ()

cout << "Triangle class area :" <<endl;

return (width * height / 2);

// 程序的主函数

int main( )

Shape *shape;

Rectangle rec(10,7);

Triangle tri(10,5);

// 存储矩形的地址

shape = &rec;

// 调用矩形的求面积函数 area

sha小孩可以艾灸吗pe->area();

// 存储三角形的地址

shape = &tri;

// 调用三角形的求面积函数 area

shape->area();

return 0;

当上面的代码被编译和执行时,它会产生下列结果:

Parent class area :

Parent class area :

导致错误输出的原因是,调用函数 area() 被编译器设三明治简笔画置为基类中的版本,这就是所谓的静态多态 ,或静态链接 - 函数调用在程序执行前就准备好了。有时候这也被称为早绑定,因为 ar满意造句子ea() 函数在程序编译期间就已经设置好了。

但现在,让我们对程序稍作修改,在 Shape 类中,area() 的声明前放置关键字 virtual,如下所示:

class Shape {

protected:

int width, height;

public:

Shape( int a=0, int b=0)

width = a;

height = b;

virtual i故事素材nt area()

cout << "Parent class area :" <<endl;

return 0;

修改后,当编译和执行前面的实例代码时,它会产生以下结果:

Rectangle class area :

Triangle class area :

此时,编译器看的是指针的内容,而不是它的类型。因此,由于 tri 和 rec 类的对象的地址存储在 *shape 中,所以会调用各自的 area() 函数。

正如您所看到的,每个子类都有一个函数 area() 的独立实现。这就是多态的一般使用方式。有了多态,您可以有多个不同的类,都带有同一个名称但具有不同实现的函数,函数的参数甚至可以是相同的。

虚函数

虚函数 是在基类中使用关键字 vi我的观察日记rtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译花语满天星器不要静态链接到该函数。

我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接 ,或后期绑定。

纯虚函数

您可能想要在基类中定义虚函数,以便在派生类中重新定义该函数更好地适用于对象,毛峰茶属于什么茶但是您在基类中又不能对虚函数给出有意义的实现,这个时候就会用到纯虚函数。

我们可以把基类中的虚函数 area() 改写如下:

class Shape {

protected:

int width, height;

public:

Shape( int a=0, int b=0)

width = a;

height = b;

// pure virtual function

virtual励志名言警句 int area() = 0;

= 0 告诉编译器,函数没有主体,上面的虚函数是纯虚函数。

本文发布于:2023-07-29 10:19:53,感谢您对本站的认可!

本文链接:http://www.ranqi119.com/ge/78/660701.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:入门教程   多态   软件
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26|友情:优美诗词|电脑我帮您|扬州装修|369文学|学编程|软件玩家|水木编程|编程频道