C++泛型和泛型编程(通俗理解+模板程序) |
您所在的位置:网站首页 › 泛型编程的优点是什么意思 › C++泛型和泛型编程(通俗理解+模板程序) |
1、泛型是什么? 泛型编程是什么? 实质上就是不使用具体数据类型(int、double、float等),而是使用一种通用类型来进行程序设计的方法,泛泛的描述一下数据,这个方法可以大规模的减少程序代码的编写量。 模板函数如下: 其中,T是一个占位符(数据类型占位符),也就是说,将来T这个位置是一个真实的、具体的数据类型。 所以,可以把T这种类型占位符也称为一种数据类型,就叫泛型(generic type)。使用这种类型占位符的编程方式就叫泛型编程。 总之,泛型也是一种数据类型,但它是用来代替所有类型的“通用类型”。 C++中, template int func(const T &a1, const T &a2) { ... } template inline int func(const T &a1, const T&a2) { ... } tempalte T1 func(const T2 &t2, const T3 &t3) { ... } //调用方法 func(i, log);2、常用的泛型例子有什么? STL容器、迭代器、算法都是泛型编程的例子。 3、泛型有什么形式实现的? 通常两种形式:函数模板和类模板。 函数模板:针对仅参数类型不同的函数; 类模板:针对仅数据成员和成员函数类型不同的类; 4、什么是模板? 使用了泛型的代码称为模板,由模板生成实际代码的过程称为模板的具体实现。 5、为什么有模板? 目的就是编写一些与类型无关的代码。 6、函数重载:函数名相同,参数类型不同,参数个数不同,参数顺序不同。 比模板代码要多。 /*泛型编程之重载函数、函数模板、类模板*/ //重载函数:出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数。 #include #include using namespace std; int add(int a, int b) { return a + b; } float add(float a, float b) { return a + b; } void main() { int a = 1, b = 2; float c = 1.1, d = 2.5; printf("a+b=%d\nc+d=%lf", add(a, b), add(c, d)); system("pause"); } //泛型编程以独立于任何特定类型的方式编写代码。 //函数模板(function template) #include using namespace std; template //定义模板函数以template开始 T add(T a, T b) { return a + b; } int main() { int a = 1, b = 2; float c = 1, d = 1.2; int e = add(a, b); float f = add(c, d); printf("a+b=%d\nc+d=%lf", e, f); system("pause"); return 0; } //类模板 #include using namespace std; template class operate { public: T a, b; T add() { return a + b; } }; int main() { //inital int a = 1, b = 2; float c = 1.0, d = 2.2; operate add_int_num; operate add_float_num; add_int_num.a = a; add_int_num.b = b; add_float_num.a = c; add_float_num.b = d; //get results printf("(int)a+b=%d\n(float)a+b=%lf\n", add_int_num.add(), add_float_num.add()); return 0; system("pause"); } |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |