MST
星途 面试题库

面试题:C++ 泛型编程中 traits 技术应用

在 C++ 泛型编程里,traits 技术用于在编译期获取类型信息。请编写一个简单的 traits 类模板,用于判断一个类型是否为指针类型。并给出使用该 traits 类模板的示例代码。
44.4万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#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 函数中展示了对 intint* 类型的判断示例。