面试题答案
一键面试#include <iostream>
// traits类模板,用于判断一个类型是否为指针类型
template <typename T>
struct IsPointer {
static const bool value = false;
};
// 特化模板,用于判断指针类型
template <typename T>
struct IsPointer<T*> {
static const bool value = true;
};
int main() {
std::cout << "Is int a pointer? " << (IsPointer<int>::value? "Yes" : "No") << std::endl;
std::cout << "Is int* a pointer? " << (IsPointer<int*>::value? "Yes" : "No") << std::endl;
return 0;
}
上述代码定义了一个 IsPointer
类模板用于判断类型是否为指针类型。IsPointer
主模板将 value
成员初始化为 false
,表示默认类型不是指针。然后,通过特化模板,当类型为指针时,value
成员被初始化为 true
。在 main
函数中展示了对 int
和 int*
类型的判断示例。