当前位置:首页 » 编程软件 » 泛型编程

泛型编程

发布时间: 2022-01-13 17:16:01

1. C++泛型编程是什么

就是类似STL的,基本的操作的都差不多,即使换了个类型也能编译

2. C++所指的泛型编程是什么意思

就是具有通用性的,比如c++的atl和模板

3. 泛型编程的泛型的机制

1. 第一轮编译时,编译器只为Stack<T>(栈算法)类型产生“泛型版”的IL代码与元数据-----并不进行泛型类型的实例化,T在中间只充当占位符
2. JIT编译时,当JIT编译器第一次遇到Stack<int>时,将用int替换“泛型版”IL代码与元数据中的T---进行泛型类型的实例化。CLR为所有类型参数为“引用类型”的泛型类型产生同一份代码;但如果类型参数为“值类型”,对每一个不同的“值类型”,CLR将为其产生一份独立的代码。

4. 泛型编程的简介

泛型编程的代表作品STL是一种高效、泛型、可交互操作的软件组件。STL以迭代器 (Iterators)和容器(Containers)为基础,是一种泛型算法(Generic Algorithms)库,容器的存在使这些算法有东西可以操作。STL包含各种泛型算法(algorithms)、泛型迭代器(iterators)、泛型容器(containers)以及函数对象(function objects)。STL并非只是一些有用组件的集合,它是描述软件组件抽象需求条件的一个正规而有条理的架构。
泛型的第一个好处是编译时的严格类型检查。这是集合框架最重要的特点。此外,泛型消除了绝大多数的类型转换。如果没有泛型,当你使用集合框架时,你不得不进行类型转换。
关于泛型的理解可以总结下面的一句话,它是把数据类型作为一种参数传递进来。
泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象,这样的事情;熟悉一些其它面向对象的语言的人应该知道,如Java里面这是通过在List里面存放Object引用来实现的。Java的单根继承在这里起到了关键的作用。然而单根继承对C++这样的处在语言链底层的语言却是不能承受之重。此外使用单根继承来实现通用容器也会带来效率和类型安全方面的问题,两者都与C++的理念不相吻合。 泛型编程最初诞生于C++中,由Alexander Stepanov[2]和David Musser[3]创立。目的是为了实现C++的STL(标准模板库)。其语言支持机制就是模板(Templates)。模板的精神其实很简单:参数化类型。换句话说,把一个原本特定于某个类型的算法或类当中的类型信息抽掉,抽出来做成模板参数T。比如qsort泛化之后就变成了:
template<class RandomAccessIterator, class Compare>
void sort(RandomAccessIterator first, RandomAccessIterator last,
Compare comp);
其中first,last这一对迭代器代表一个前闭后开区间,迭代器和前闭后开区间都是STL的核心概念。迭代器建模的是内建指针的接口(解引用、递增、递减等)、前闭后开区间是一个简单的数学概念,表示从first(含first)到last(不含last)的区间内的所有元素。此外,comp是一个仿函数(functor)。仿函数也是STL的核心概念,仿函数是建模的内建函数的接口,一个仿函数可以是一个内建的函数,也可以是一个重载了operator()的类对象,只要是支持函数调用的语法形式就可成为一个仿函数。
通过操作符重载,C++允许了自定义类型具有跟内建类型同样的使用接口;又通过模板这样的参数化类型机制,C++允许了一个算法或类定义,能够利用这样的接口一致性来对自身进行泛化。例如,一个原本操作内建指针的算法,被泛化为操纵一切迭代器的算法。一个原本使用内建函数指针的算法,被泛化为能够接受一切重载了函数调用操作符(operator())的类对象的算法。

5. 求问泛型编程通俗解释

拿数组举例,非泛型的话你用int就要用给int的数组,用double就要用double的数组,而泛型的话只要一个泛型的数组类,不同的类型只要声明时用不同的类型参数就行了。
泛型的作用主要应该是代码重用,就像我举的例子一样,把原来需要多个数组类(尽管有很多代码是相同的),变成了只要一个数组类。
当然,这不是真正的泛型,有了约束的泛型才能体现出泛型的真正强大之处,这不是几句话能说得清的,想深入了解的话建议你去看相关书籍。

6. 什么是泛型编程

我们编程时,总是先由抽象入手,抽象就是忽略他们的各自独有的特点,找到他们共有的,能用于各种类型的思维方法。泛型无非是一种抽象的模板罢了,很好理解的一种抽象上的概念,不要怕他。

7. 泛型编程的介绍

泛型编程(Generic Programming)最初提出时的动机很简单直接:发明一种语言机制,能够帮助实现一个通用的标准容器库。所谓通用的标准容器库,就是要能够做到,比如用一个List类存放所有可能类型的对象这样的事;泛型编程让你编写完全一般化并可重复使用的算法,其效率与针对某特定数据类型而设计的算法相同。泛型即是指具有在多种数据类型上皆可操作的含意,与模板有些相似。STL巨大,而且可以扩充,它包含很多计算机基本算法和数据结构,而且将算法与数据结构完全分离,其中算法是泛型的,不与任何特定数据结构或对象类型系在一起。

8. c++模板与泛型的区别是什么呢

1、泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础。
2、模板定义以关键字template开始,后接尖括号括住的模板形参表。模板形参可以是表示类型的类型形参(type parameter),也可以是表示常量表达式的非类型形参(nontype parameter)。

9. 1. 练习泛型编程。

1.public interface Iarea
{
double area(double x ,double y );
double area(double x );
}
2.public class MyRectangle :Iarea
{
area (double x1, double y1)
{
renturn x1*y1 ;
}
}
public class MyCircle :Iarea
{
area (double r )
{
return PI * r * r;
}
}
3. publice class MyGeneric <T> : Iarea
{
if (T.TypeName.....==MyRectangle)
return T.area(double x,double y);
if (T.TypeName.....==MyCircle)
return T.area(double r);
else
return ;
}
自己测试吧。

10. 什么是泛型编程思想

不是相同的东西
无法对比

泛型
赋予了类型参数式多态的能力

泛型的第一个好处是编译时的严格类型检查。这是集合框架最重要的特点。此外,泛型消除了绝大多数的类型转换。如果没有泛型,当你使用集合框架时,你不得不进行类型转换。

热点内容
域名指定服务器ip 发布:2024-09-20 22:26:43 浏览:673
jsp系统源码下载 发布:2024-09-20 22:22:22 浏览:865
怎么给云服务器套盾 发布:2024-09-20 22:06:21 浏览:8
我的世界建筑大师设计服务器 发布:2024-09-20 22:05:37 浏览:151
sqlserver的check约束 发布:2024-09-20 22:05:25 浏览:405
编程需要p 发布:2024-09-20 22:03:55 浏览:238
安卓小q画笔哪个版本可以用 发布:2024-09-20 21:57:03 浏览:368
mcgs脚本例程 发布:2024-09-20 21:47:01 浏览:697
java配置mysql 发布:2024-09-20 21:32:44 浏览:759
phpapache伪静态 发布:2024-09-20 20:54:45 浏览:588