程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2023-11-07
在类层次结构中,尽可能地为类设计一个统一的公共接口(界面),即采用抽象基类设计方法。一个统一的公共接口必须经过精心的分析和设计。通常采用如下策略:
(1)分析相关对象的需求,设计出一组实现公共功能的函数。
(2)将这些函数作为基类的虚函数(或纯虚函数),它们定义了一个统一公共接口。
(3)由该基类派生出若干子类,在各个子类中实现这些虚函数。
利用虚函数,可在基类和派生类中使用相同的函数名定义函数的不同实现,从而实现“一个接口,多种方式”。当用基类指针或引用对虚函数进行访问时,软件系统将根据运行时指针,或引用所指向的实际对象来确定调用对象所在类的虚函数版本。
【例7.8】编写一个程序计算正方体、球体和圆柱体的表面积和体积。
解:求解本题的过程如下:
(1)分析问题,从正方体、球体和圆柱体的各种运算功能中抽象公共的功能,主要包括求表面积和体积功能。
(2)设计一个公共基类Container为抽象类(界面),Container类中声明求表面积和体积的纯虚函数(该抽象类本身是没有表面积和体积可言的)。另外,Container类中定义一个公共的数据成员radius,此数据可作为球体的半径、正方体的边长、圆柱体底面圆半径。
(3)由Container抽象类派生出三个类即Cube、Sphere和Cylinder,在这三个类中都具有求表面积和体积的重定义版本(surface_area、volume函数作为公共接口)。这些类之间构成的类层次如图7.5所示。(www.chuimin.cn)
图7.5 类层次
程序如下:
本程序的执行结果如下:
正方体表面积:96
正方体体积:64
球体表面积:452.39
球体体积:904.781
圆柱体表面积:314.16
圆柱体体积:392.7
有关C++程序设计基础教程的文章
程序设计是指设计、编写和调试程序的方法与过程。由于程序是软件的本体,因此软件的质量主要通过程序的质量体现,因此,研究一种切实可行的程序设计方法至关重要。继承是面向对象程序设计方法的一个重要标志,利用继承机制可以大大提高程序的可重用性和可扩充性。......
2023-11-07
图6.18类层次图程序如下:本程序的执行结果如下:圆桌属性数据:高度:0.6米桌面半径:0.5米面积:0.785平方米颜色:白色设计一个虚基类Person,包含姓名和年龄私有数据成员以及相关的成员函数,由它派生出领导类Leader,包含职务和部门私有数据成员以及相关的成员函数,再由Person派生出工程师类Engineer,包含职称和专业私有数据成员以及相关的成员函数,然后由Leader和Engineer类派生出主任工程师类Chairman。......
2023-11-07
C++语言的ISO标准已在1997年11月被一致通过,1998年8月被正式批准。在C++中,结构可作为一种特殊的类,它虽然可以包含函数,但是它没有私有或保护的成员。友元打破了类的封装性,它是C++另一个面向对象的重要特性。C++支持继承性C++中可以允许单继承和多继承。......
2023-11-07
在类声明中,public、private和protected是关键字,称为成员访问限定符,它们分别表示公有、私有和保护的成员访问权限。其他函数不能访问该类的保护数据成员,也不能调用该类的保护成员函数。◇一旦给出了成员访问限定符,它后面的成员都具有这个成员访问权限,直到出现另一个成员访问限定符或类声明结束为止。类的成员函数可以访问类的所有成员,没有任何限制,而类的对象对类的成员的访问是受成员访问控制符制约的。......
2023-11-07
声明函数模板的一般格式如下:template<模板参数表>函数返回值类型函数模板名(形参表)函数模板定义由关键字template开头,表示声明一个模板。模板参数表写在尖括号<>中,参数一般由关键字class或typename后加一个标识符构成。Class和typename的意义相同,表示后面的标识符是一个参数类型,代表一个潜在的标准类型或用户定义的类型。例如,定义max函数模板求两个数中的较大者。如下面的声明是错误的:可以看出,用函数模板比函数重载更方便,程序更简洁。......
2023-11-07
类是一种用户自定义的数据类型,定义一个类,就是描述类名及其成员。“类名”是一个标识符,用于唯一标识一个类。分析以下声明MyClass类的组成。该类的描述如图2.1所示,其中大圆圈中列出的函数名均为公有函数名,小圆圈中列出的是所有数据成员。图2.1MyClass类描述注意:因为类是一种数据类型,在声明一个类时系统并不会为其分配内存空间,所以在定义类中的数据成员时,不能对其进行初始化。......
2023-11-07
多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。按照绑定进行阶段的不同,可以分为两种不同的绑定方法:静态绑定和动态绑定,这两种绑定过程中分别对应着多态的两种实现方式。有些多态类型,其同名操作的具体对象能够在编译、连接阶段确定,通过静态绑定解决,比如重载、强制和参数多态。包含多态操作对象的确定就是通过动态绑定完成的。分析以下程序的执行结果。......
2023-11-07
类的每一个成员函数都有一个隐含的特殊指针,通常称为this指针,this指针的类型就是成员函数所属的类型。通常不显式使用this指针。this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,在外部看来,每个对象都拥有自己的成员函数。this指针一般用于返回当前对象自身。程序的执行结果如下:s1∶n=2s2∶n=1s3∶n=3this指针大量用于运算符重载成员函数设计中,这将在后面详细介绍。......
2023-11-07
相关推荐