知识点:解决多态问题
提问:将两个数值相加并返回结果,数字格式不固定。
如何解决?
template<typename T>
T add(T a, T b) {
return a + b;
}
int main() {
int a = 5;
int b = 10;
std::cout << "Sum: " << add(a, b) << std::endl;
double c = 3.14;
double d = 2.718;
std::cout << "Sum: " << add(c, d) << std::endl;
return 0;
}
class Number { //基类
public:
virtual double getValue() const = 0;
virtual ~Number() {}
};
//派生类1
class Integer : public Number {
private:
int value;
public:
Integer(int val) : value(val) {}
double getValue() const override {
return static_cast<double>(value);
}
};
//派生类2
class Double : public Number {
private:
double value;
public:
Double(double val) : value(val) {}
double getValue() const override {
return value;
}
};
//函数
double addNumbers(const Number& num1, const Number& num2) {
return num1.getValue() + num2.getValue();
}
int main() {
Number* num1 = new Integer(5);
Number* num2 = new Double(3.14);
std::cout << "Sum: " << addNumbers(*num1, *num2) << std::endl;
delete num1;
delete num2;
return 0;
}