C++派生类与基类引用详解

需积分: 9 5 下载量 183 浏览量 更新于2024-07-13 收藏 8.66MB PPT 举报
"派生类对象可以初始化基类的引用,这是C++中面向对象编程的一个重要特性。派生类是从基类扩展而来,包含了基类的所有成员(除非被私有化或覆盖)。通过基类引用,我们可以访问派生类中的基类部分,但无法直接访问派生类新增的成员或重写后的成员。这种特性使得在代码中可以使用基类引用处理各种不同类型的派生类对象,实现了多态性。 在C++中,基类引用的声明如下: ```cpp Base &baseRef = derivedObj; ``` 这里的`Base`是基类,`Derived`是派生类,`baseRef`是一个基类引用,被初始化为派生类对象`derivedObj`。这样,`baseRef`就只能访问`Derived`类中继承自`Base`的成员,不能访问`Derived`类独有的成员。 C++的发展历程始于早期的BCPL和B语言,由Dennis Ritchie和Brian Kernighan在贝尔实验室设计出了C语言,用于编写UNIX操作系统。C++是在C语言基础上扩展的,引入了类、模板、异常处理、运算符重载等面向对象特性。C++保留了C语言的大部分语法和特点,如丰富的运算符、良好的结构化编程支持以及高度的灵活性和效率。 C语言的主要特性包括: 1. 结构化编程:C语言支持函数、结构体等结构化编程元素,便于组织复杂的代码。 2. 高级与低级语言特性结合:C语言提供丰富的运算符,支持位运算,同时允许直接访问内存,使得程序设计更加灵活。 3. 可移植性:C语言编写的程序在不同的计算机平台间移植相对容易,只需少量或无需修改。 4. 自由度大:C语言的语法结构相对宽松,给程序员提供了较大的设计空间,但也意味着对编程者的技能要求较高。 尽管C语言的灵活性和效率很高,但它的语法不够严谨,调试过程可能会比较复杂。对于初学者来说,理解和掌握C语言可能需要更多的时间和实践。然而,一旦熟练掌握,C++或C语言就能成为开发高效、可维护且跨平台的软件的强大工具。"

题2】定义一个基类Shape,有成员函数:calArea(),但什么都不做,返回0。在此基础上公有派生出Rectangle(矩形)类和Circle类,添加相应的数据成员(成员均为double型),重新定义calArea()计算对象的面积。 主函数中,分别定义一个Rectangle和Circle类对象,初始值由键盘输入。(1)通过对象调用相应的calArea(),输出结果;(2)定义Shape类对象指针,分别赋以Rectangle和Circle类的对象地址,通过指针调用calArea(),输出结果;(3)定义Shape类对象引用r,以Rectangle和Circle类的对象初始化r,通过引用r调用calArea(),输出结果。 PI取值:3.1415926 3 6 3 通过Rectangle类对象调用calArea():18 通过Circle类对象调用calArea():28.2743 基类指针指向Rectangle类对象,调用calArea():0 基类指针指向Circle类对象,调用calArea():0 Rectangle类对象初始化基类对象引用r,r调用calArea():0 Circle类对象初始化基类对象引用r,r调用calArea():0 2 5 2 通过Rectangle类对象调用calArea():10 通过Circle类对象调用calArea():12.5664 基类指针指向Rectangle类对象,调用calArea():0 基类指针指向Circle类对象,调用calArea():0 Rectangle类对象初始化基类对象引用r,r调用calArea():0 Circle类对象初始化基类对象引用r,r调用calArea():0 1 5 4 通过Rectangle类对象调用calArea():5 通过Circle类对象调用calArea():50.2655 基类指针指向Rectangle类对象,调用calArea():0 基类指针指向Circle类对象,调用calArea():0 Rectangle类对象初始化基类对象引用r,r调用calArea():0 Circle类对象初始化基类对象引用r,r调用calArea():0

2023-05-24 上传