尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

记录C++ 10

记录C++ 10 泛型编程概念编写不依赖具体数据类型的程序将程序尽可能通用将算法从数据结构中抽象出来成为通用算法泛型编程模板概念模板是一种用不确定类型参数来产生一系列函数和类的机制通过模板可以产生类和函数的集合使他们操控不同的数据类型从而避免为每一种数据类型单独产生一个函数和类模板工作方式模板需要实例化才能执行和使用函数模板实例化后生成的函数实体在内存中不是共享的。每个不同类型的实例化都会在内存中生成一个独立的、完整的函数副本函数模板函数模板使用和普通函数不一样它的类型可以通过参数来传递在函数定义时可以不指明具体的数据类型发生函数调用时编译器可根据传入的实参自动推断数据类型template typename T, typename T2 void Show(T a, T2 b) { cout a a endl; cout b b endl; }函数和函数模板的优缺点函数 优点真正的函数调用编译器会进行类型检查缺点类型不同需要重新定义函数代码无法复用函数模板优点代码复用适合所有类型克服普通函数弊端编译器会进行类型检查克服宏定义弊端缺点调试较难对程序员要求高一般编写一个类型确定的函数运行通过后再修改成函数模板template typename T void Swap(T a, T b) { T tmp a; a b; b tmp; }调用方式#includeiostream using namespace std; template typename T, typename T2 void Show(T a, T2 b) { cout a a endl; cout b b endl; } template typename T void Swap(T a, T b) { T tmp a; a b; b tmp; } template void Swapint (int a, int b) //针对int类型的交换性能更高 { cout int endl; a ^ b; b ^ a; a ^ b; } int main() { int a 10; int b 20; swap(a,b); //自动类型推导调用 Swapint(a, b);//具体类型显示调用 Showint, int(a, b); }
返回列表