面试题答案
一键面试#include <iostream>
template <typename T, typename U>
class Base {
public:
T t;
U u;
Base(T a, U b) : t(a), u(b) {}
T func() {
return t + u;
}
};
template <typename T, typename U>
class Derived : public Base<T, U> {
public:
Derived(T a, U b) : Base<T, U>(a, b) {
// 根据不同模板参数值进行不同初始化操作
if constexpr (std::is_same_v<T, int> && std::is_same_v<U, double>) {
this->t = static_cast<T>(this->t * 2);
this->u = static_cast<U>(this->u * 0.5);
}
}
T func() override {
return this->t * 2 * this->u;
}
};
你可以使用以下方式测试这个代码:
int main() {
Derived<int, double> d(3, 4.5);
std::cout << "Derived func result: " << d.func() << std::endl;
return 0;
}