cpp多次调用同一函数返回不同结果
时间: 2024-09-06 22:08:24 浏览: 55
mysql多次调用存储过程的问题
在 C++ 中,如果一个函数在不同上下文、传入不同参数的情况下能够返回不同的结果,通常是通过函数的行为依赖于其输入参数或者状态来实现的。这并不是函数本身的特性,而是程序员设计函数的方式使其具有动态性。
例如:
1. **函数指针或函数对象**: 可以通过传递指向不同类型函数的指针,或者使用 std::function 来让一个函数接收并处理多种类型的参数,从而返回不同结果。
```cpp
void print(int x) { std::cout << "Integer: " << x << '\n'; }
void print(double x) { std::cout << "Double: " << x << '\n'; }
std::function<void(double)> func;
func = print; // 将 int 函数赋值给 double 类型的函数指针
func(3); // 输出 Integer: 3
func(3.14); // 输出 Double: 3.14
```
2. **条件语句或switch分支**: 根据输入的不同值选择执行不同的代码路径,每个分支对应不同的返回结果。
```cpp
int calculate(int a, int b) {
switch (a) {
case 0: return b * 2;
case 1: return b * b;
default: return a + b;
}
}
```
3. **动态绑定和虚函数**: 如果函数是在基类中声明为虚函数,并在派生类中被重写,那么根据实际的对象类型调用的是派生类的版本,可能会有不同的结果。
```cpp
class Base {
public:
virtual void print() { cout << "Base" << endl; }
};
class Derived : public Base {
public:
void print() override { cout << "Derived" << endl; }
};
Base* baseObj = new Derived();
baseObj->print(); // 输出 "Derived"
```
阅读全文