C++面向对象编程:多态与虚函数示例

需积分: 10 1 下载量 108 浏览量 更新于2024-08-19 收藏 684KB PPT 举报
这段代码是C++面向对象程序设计的一个示例,主要展示了类(class)的创建、成员变量和成员函数的使用,以及继承(inheritance)和多态(polymorphism)的概念。以下是详细的知识点解析: 1. **面向对象编程基础**: - 使用`iostream.h`,这是早期C++中的I/O流库,现已被`<iostream>`替代。`class T`定义了一个名为`T`的类,它有公共(public)成员变量`a`和私有(private)成员变量`b`。构造函数`T(int x)`用于初始化对象,设置`a`的值并累加`x`到静态成员变量`b`。 2. **静态成员和实例成员**: - `T::b`是一个静态成员变量,所有`T`类的实例共享同一`b`值。在`main`函数中,通过类名`.`访问静态成员,如`T::display(A)`和`T::display(B)`。 3. **继承与派生**: - 在`rectangle`类中,`public`继承自`point`类,这意味着`rectangle`拥有`point`的所有公共成员,并可以添加额外的属性如`w`和`h`以及方法`area()`。通过构造函数参数初始化父类的属性。 4. **多态与函数重载**: - `fun(point &s)`函数接收一个`point`类型的引用参数,调用其`area()`方法。多态体现在这里,即使传递的是`rectangle`对象,由于函数重载,会调用对应类的`area()`实现,即返回`w * h`而非`0.0`。 5. **运算符重载**: - 这部分内容没有直接给出,但提到它是多态的一种形式,意味着可以自定义运算符的行为,如重载`+`或`*`等操作符,使其适应不同类的对象。 6. **虚函数与动态绑定**: - 虚函数是在基类中声明,但在派生类中可以被重新定义的函数。当通过基类指针或引用调用虚函数时,实际执行的是派生类的版本,这称为动态绑定。例如,如果`rectangle`类中`area()`是虚函数,那么`fun(rec)`将调用`rectangle`的`area()`实现。 7. **抽象类与纯虚函数**: - 抽象类包含至少一个纯虚函数,这些函数没有实现,只有声明。其他类继承抽象类时必须实现这些纯虚函数,以确保它们提供了所需的功能。抽象类定义了子类必须遵守的接口,允许在不完全实现的情况下创建接口。 8. **联编概念**: - 联编是将编译后的对象文件链接成可执行文件的过程,涉及静态和动态链接,以及如何处理函数的地址计算。在这个例子中,编译后的`point`和`rectangle`类的代码会通过联编链接在一起,形成最终的程序。 通过这个程序,学生可以学习和理解C++面向对象编程的核心概念,包括类、继承、多态、函数重载、运算符重载、虚函数、抽象类以及联编的基本原理。