C++编程实践:动物类与形状类示例

需积分: 0 0 下载量 129 浏览量 更新于2024-09-12 收藏 46KB DOCX 举报
"C++编程练习,包括动物类与派生类、抽象基类与多态、以及矩形和圆形的面积周长计算" 这里有两个C++编程示例,主要涉及面向对象编程的关键概念,包括类、继承、多态以及抽象基类。首先,我们来看第一个例子(8-5): 在8-5的例子中,我们定义了一个名为`mammal`的基类,它有一个私有成员变量`age`和一个虚函数`void speak()`。`speak`函数的实现是打印出“AA the dog's age is”,这是一个基本的模板,表明这个类可能用于表示不同的哺乳动物。`mammal`类的`age`成员是公共的,允许外部访问。 接下来,我们有一个`dog`类,它是`mammal`的派生类。`dog`类重写了`speak`方法,现在它会输出狗的年龄,同时提供了`setshowage`函数,让用户输入狗的年龄。在`main`函数中,我们创建了一个`dog`对象`dog1`,然后通过`dog1.setshowage()`获取并设置了狗的年龄。接着,我们用`new`关键字动态创建了一个`dog`对象,并将其赋值给`mammal`类型的指针`p`。这展示了C++中的多态性,即使`p`指向的是一个`dog`对象,它仍然可以调用`speak`函数,而且会执行`dog`类的版本,而不是`mammal`类的版本。 第二个例子(8-6)涉及到抽象基类和几何形状的表示。`Shape`是一个抽象基类,因为它声明了两个纯虚函数`GetArea()`和`GetPerim()`。这意味着任何直接或间接继承自`Shape`的类必须实现这两个函数。`Rectangle`和`Circle`类分别代表矩形和圆形,它们都实现了`Shape`的接口,即`GetArea`和`GetPerim`。`Rectangle`类接受长和宽作为构造函数的参数,而`Circle`类接受半径。在`main`函数中,用户可以输入矩形的长度和宽度,然后计算并输出其面积和周长。同样,对于圆形,半径会显示出来,然后计算并输出面积和周长。 这两个例子都强调了C++中面向对象编程的核心思想:封装(通过类来隐藏数据和实现细节)、继承(创建新的类来扩展已有类的功能)以及多态(通过虚函数实现接口的一致性)。这些概念是理解C++和其他面向对象语言的基础。