C++泛型和泛型编程(通俗理解+模板程序)

您所在的位置:网站首页 泛型编程的优点是什么意思 C++泛型和泛型编程(通俗理解+模板程序)

C++泛型和泛型编程(通俗理解+模板程序)

#C++泛型和泛型编程(通俗理解+模板程序)| 来源: 网络整理| 查看: 265

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 办公设备维修网 版权所有 豫ICP备15022753号-3