首页 > 编程语言 >什么是C++模板,有哪些类型的模板?

什么是C++模板,有哪些类型的模板?

时间:2024-11-05 19:18:19浏览次数:3  
标签:Box return 函数 哪些 int C++ 类型 模板

模板

C++模板是一种强大的语言特性,允许开发者编写与类型无关的代码,从而实现代码的复用和灵活性。通过模板,可以定义函数和类,具体实现将由具体的类型实例化决定。

函数模板

函数模板(Function Templates):
函数模板用于定义一个通用的函数,该函数可以接受任意类型的参数。通过使用模板参数,能够根据传递的类型生成合适的函数。

template <typename T>  
T add(T a, T b) {  
    return a + b;  
}  

int main() {  
    int intResult = add(2, 3);             // 整数相加  
    double doubleResult = add(2.5, 3.5);   // 浮点数相加  
    return 0;  
}

类模板

类模板允许定义一个通用的类,其中的数据成员和成员函数可以用模板参数来表示,以支持不同类型的实例。

template <typename T>  
class Box {  
private:  
    T data;  
public:  
    Box(T d) : data(d) {} // 构造函数  
    T getData() const {  
        return data;  
    }  
};  

int main() {  
    Box<int> intBox(123);          // 存储整数  
    Box<std::string> strBox("Hello"); // 存储字符串  
    return 0;  
}

其他类型模板

模板特化(Template Specialization):

        全特化:为特定类型提供特定实现。

        偏特化:为某些类型组合提供特定实现

(全特化:)

template <typename T>  
class Box {  
public:  
    void show() {  
        std::cout << "Generic Box" << std::endl;  
    }  
};  

// 对特定类型进行全特化  
template <>  
class Box<int> {  
public:  
    void show() {  
        std::cout << "Integer Box" << std::endl;  
    }  
};

非类型模板参数

模板参数不仅可以是类型,还可以是常量值,例如整数值。

template <typename T, int size>  
class Array {  
private:  
    T arr[size]; // 固定大小数组  
public:  
    int getSize() const { return size; }  
};  

int main() {  
    Array<int, 5> intArray; // 创建大小为 5 的整型数组  
    return 0;  
}

模板元编程

通过模板进行编程的一种技术,利用模板在编译时进行计算和类型推导。可以用来实现编译器生成代码的复杂行为。

总结

1.C++ 模板提供了编写通用和可复用代码的能力,使函数和类能够处理不同的数据类型。

2.主要类型包括函数模板和类模板,此外还有模板特化、非类型模板参数等高级特性。

3.模板元编程利用编译时计算,能实现更复杂的类型操作和性能优化。

模板在 C++ 中是一种非常强大且灵活的特性,可以有效地提升代码的重用性和可维护性。

 

标签:Box,return,函数,哪些,int,C++,类型,模板
From: https://blog.csdn.net/2302_80908313/article/details/143522490

相关文章