【C++】多态案例— —计算器类
发布人:shili8
发布时间:2025-02-14 01:41
阅读次数:0
**多态案例——计算器类**
在面向对象编程中,多态是指一个方法或函数可以有多种不同的行为,这取决于它的上下文。计算器类是一个经典的例子,它可以实现多态。
### 计算器类设计我们将设计一个简单的计算器类,支持基本的四则运算:加、减、乘、除。
#### 基本结构
cppclass Calculator {
public:
virtual double calculate(double num1, double num2) =0; // 抽象方法};
在这个例子中,我们定义了一个抽象类 `Calculator`,它包含一个纯虚函数 `calculate`。这个函数将用于计算两个数字的结果。
#### 子类设计我们将创建四个子类,每个子类负责一种具体的运算:
cppclass Adder : public Calculator {
public:
double calculate(double num1, double num2) override {
return num1 + num2;
}
};
class Subber : public Calculator {
public:
double calculate(double num1, double num2) override {
return num1 - num2;
}
};
class Multiplier : public Calculator {
public:
double calculate(double num1, double num2) override {
return num1 * num2;
}
};
class Divider : public Calculator {
public:
double calculate(double num1, double num2) override {
if (num2 ==0) {
throw std::runtime_error("Cannot divide by zero!");
}
return num1 / num2;
}
};
每个子类都实现了 `calculate` 函数,负责一种具体的运算。
### 多态示例现在,我们可以使用多态来计算不同类型的结果:
cppint main() {
Calculator* adder = new Adder();
Calculator* subber = new Subber();
Calculator* multiplier = new Multiplier();
Calculator* divider = new Divider();
double result1 = adder->calculate(5,3);
double result2 = subber->calculate(10,4);
double result3 = multiplier->calculate(7,2);
double result4 = divider->calculate(9,3);
std::cout << "Add: " << result1 << std::endl;
std::cout << "Subtract: " << result2 << std::endl;
std::cout << "Multiply: " << result3 << std::endl;
std::cout << "Divide: " << result4 << std::endl;
delete adder;
delete subber;
delete multiplier;
delete divider;
return0;
}
在这个例子中,我们创建了四个 `Calculator` 对象,每个对象都代表一种具体的运算。然后,我们使用多态来计算不同类型的结果。
### 总结在本文中,我们设计了一个简单的计算器类,支持基本的四则运算。我们使用多态来实现不同的运算,并展示了如何使用多态来计算不同类型的结果。

