网站建设攵金手指科杰壹陆,徐州网站建设专家,网站后期培训班一般要多少钱,电商网站文档模板
模板是C中一种强大的特性#xff0c;允许你编写通用的代码#xff0c;以便在不同数据类型上重复使用。模板分为函数模板和类模板#xff0c;它们都是在编译时生成具体代码的蓝图。
函数模板
函数模板是一种定义通用函数的方式#xff0c;可以在不同数据类型上使用相…模板
模板是C中一种强大的特性允许你编写通用的代码以便在不同数据类型上重复使用。模板分为函数模板和类模板它们都是在编译时生成具体代码的蓝图。
函数模板
函数模板是一种定义通用函数的方式可以在不同数据类型上使用相同的代码逻辑。函数模板使用template关键字定义允许在函数中使用一个或多个类型参数。
语法
template typename T
return_type function_name(T parameter1, T parameter2, ...) {// 函数体
}template typename T定义了一个模板其中T是类型参数可以在函数内部使用。return_type函数的返回类型。function_name函数的名称。T parameter1, T parameter2, ...函数的参数列表参数的类型是T。
示例
#include iostream// 函数模板示例计算两个数的最大值
template typename T
T max(T a, T b) {return (a b) ? a : b;
}int main() {int x 5, y 10;double d1 3.5, d2 7.8;std::cout Max of integers: max(x, y) std::endl;std::cout Max of doubles: max(d1, d2) std::endl;return 0;
}类模板
类模板允许你定义通用的类其中的数据类型可以作为参数进行指定以便创建适用于不同数据类型的对象。
语法
template typename T
class ClassTemplate {
public:// 类成员和方法
};template typename T定义了一个类模板其中T是类型参数可以在类内部使用。
示例
#include iostream// 类模板示例实现一个通用的栈
template typename T
class Stack {
private:T* data;int top;int capacity;public:Stack(int size) : capacity(size), top(-1) {data new T[capacity];}~Stack() {delete[] data;}void push(T value) {if (top capacity - 1) {data[top] value;}}T pop() {if (top 0) {return data[top--];}return T(); // 默认构造一个T类型的对象并返回}bool isEmpty() {return top -1;}
};int main() {Stackint intStack(5);Stackdouble doubleStack(3);intStack.push(10);intStack.push(20);doubleStack.push(3.14);std::cout Int Stack: ;while (!intStack.isEmpty()) {std::cout intStack.pop() ;}std::cout std::endl;std::cout Double Stack: ;while (!doubleStack.isEmpty()) {std::cout doubleStack.pop() ;}std::cout std::endl;return 0;
}注意
模板声明和实现必须放在同一个文件中
因为c模板的底层是占位符编译的时候链接编入如果放在不同文件调用会出现找不到定义/实现的情况