出一道很难得c++类与对象的题
时间: 2023-09-12 12:05:26 浏览: 82
c++类与对象练习题.pdf
### 回答1:
好的,以下是一道难度较高的 C++ 类与对象题目:
编写一个名为 `Shape` 的基类,包含一个纯虚函数 `getArea()` 用于计算图形面积。然后编写两个派生类 `Rectangle` 和 `Circle`,分别用于表示矩形和圆形。这两个类都应该覆盖 `Shape` 基类中的 `getArea()` 函数。
在 `main()` 函数中,创建一个 `Shape` 类型的指针数组,该数组包含三个指针,分别指向一个 `Shape` 对象、一个 `Rectangle` 对象和一个 `Circle` 对象。然后使用循环遍历该数组,对于每个对象,调用它的 `getArea()` 函数并输出结果。
提示:可以使用多态来实现这个问题。
### 回答2:
假设有一个类叫做"人",它具有以下属性和方法:
属性:姓名(name),年龄(age),学号(student_id)
方法:
- 学习(study):打印出"姓名[姓名]正在学习"
- 年龄加一(increment_age):将年龄增加1
- 获取学号(get_student_id):返回学号
现在需要编写一个方法,名为"最年长学生",该方法接收一个人对象的列表作为参数,并返回列表中年龄最大的学生对象。
解决方法如下:
```
class 人:
def __init__(self, name, age, student_id):
self.name = name
self.age = age
self.student_id = student_id
def study(self):
print("姓名%s正在学习" % self.name)
def increment_age(self):
self.age += 1
def get_student_id(self):
return self.student_id
def 最年长学生(人列表):
最年长的学生 = None
最大年龄 = 0
for 人对象 in 人列表:
if 人对象.age > 最大年龄:
最大年龄 = 人对象.age
最年长的学生 = 人对象
return 最年长的学生
人列表 = [
人("小明", 18, "001"),
人("小红", 20, "002"),
人("小刚", 19, "003")
]
最年长的学生 = 最年长学生(人列表)
print("年龄最大的学生是:%s,年龄为:%d,学号为:%s" % (最年长的学生.name, 最年长的学生.age, 最年长的学生.student_id))
```
这段代码定义了一个人类,并实现了最年长学生方法来找到年龄最大的学生对象。在最年长学生方法中,我们通过遍历人列表,逐个比较人对象的年龄,找到最大的年龄并记录下对应的学生对象。最后返回最年长的学生对象,然后在主函数中打印出最年长学生的姓名、年龄和学号。
### 回答3:
题目:请设计一个类,实现一个简单的计算器功能。
要求:
1. 计算器能够进行加、减、乘、除运算。
2. 计算器能够存储历史运算记录,并能够返回最近一次的运算结果。
3. 计算器的初始化结果为0。
4. 计算器需要具有对运算数的输入和获取功能。
解答:
```python
class Calculator:
def __init__(self):
self.result = 0
self.history = [] # 用于存储历史运算记录
def add(self, num):
self.result += num
self.history.append("+" + str(num))
def subtract(self, num):
self.result -= num
self.history.append("-" + str(num))
def multiply(self, num):
self.result *= num
self.history.append("*" + str(num))
def divide(self, num):
if num != 0:
self.result /= num
self.history.append("/" + str(num))
else:
print("除数不能为零!")
def get_result(self):
return self.result
def get_history(self):
return self.history[-1] if self.history else "无历史记录"
```
这个类通过实例化计算器类,我们可以进行各种运算操作。例如:
```python
c = Calculator()
c.add(10) # 将result加上10
print(c.get_result()) # 输出:10
c.subtract(5) # 将result减去5
print(c.get_result()) # 输出:5
c.multiply(3) # 将result乘以3
print(c.get_result()) # 输出:15
c.divide(0) # 尝试将result除以0,输出除数不能为零的提示信息
print(c.get_result()) # 输出:15
print(c.get_history()) # 输出最近一次的运算记录:“/0”
```
这个计算器类包含了四个基本的运算方法:add、subtract、multiply和divide,对应四种基本运算。通过调用这些方法,我们可以实现我们想要的计算操作,并且能够获取结果和查看历史记录。
阅读全文