`

泛型设计(3)

阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

每个ArrayRC 类的实例化过程都会实例化相应的Array 类模板的实例,例如下面的定

ArrayRC<int> ia_rc( 10 );

引起Array 类和ArrayRC 类的一个int 实例被实例化,ia_rc 同上一节的非模板实例相同。

为了说明这一点,我们重写前面的程序来练习Array 和ArrayRC 类模板类型。首先,为了支

持语句

// 现在swap()必须也是一个模板

swap( ia1, 1, ia1.size() );

我们必须将swap()定义成一个函数模板,例如

#include "Array.h"

template <class elemType>

void swap( Array<elemType> &array, int i, int j )

{

elemType tmp = array[ i ];

array[ i ] = array[ j ];

array[ j ] = tmp;

}

每个swap()调用都会根据数组的类型产生适当的实例。下面是重新改写之后的main()函

数,它使用了Array 和ArrayRC 类模板

#include <iostream>

#include "Array.h"

#include "ArrayRC.h"

template <class elemType>

inline void

swap( Array<elemType> &array, int i, int j )

{

elemType tmp = array[ i ];

array[ i ] = array[ j ];

array[ j ] = tmp;

}

int main()

{

Array<int> ia1;

ArrayRC<int> ia2;

cout << "swap() with Array<int> ia1\n";

int size = ia1.size();

swap( ia1, 1, size );

cout << "swap() with ArrayRC<int> ia2\n";

size = ia2.size();

swap( ia2, 1, size );

return 0;

}

程序的输出结果与非模板的IntArray 类实现相同。

分享到:
评论

相关推荐

    C++泛型编程和设计模式应用

    3. 设计模式的应用:深入分析各种设计模式,探讨如何在C++中使用模板来改进设计模式的实现,比如用模板实现工厂模式以减少代码重复,或者用模板元编程实现更高效的设计。 4. 泛型与面向对象设计的结合:探讨如何在...

    泛型程序设计与STL

    ### 泛型程序设计与STL:理解与应用 #### 泛型程序设计:概念与优势 泛型程序设计(Generic Programming)是一种编程范式,它允许程序员编写能够处理多种数据类型的代码,而无需为每种类型重复编写相同的逻辑。...

    C++设计新思维:泛型编程与设计模式之应用(PDF)

    《C++设计新思维:泛型编程与设计模式之应用》正是这样一本书,它不仅深入探讨了C++的核心理念,还着重强调了泛型编程与设计模式的实际应用,为开发者提供了一个新的视角来审视和掌握这门语言。 泛型编程是C++设计...

    泛型程序设计

    泛型程序设计是一种高级的编程范式,它允许程序员创建可重用的代码模板,这些模板可以在多种数据类型上工作,而无需重复编写针对每种特定类型的具体实现。这种抽象方式提高了代码的灵活性和可维护性,是现代编程语言...

    C++设计新思维:泛型编程与设计模式之应用.pdf 带目录书签

    C++设计新思维:泛型编程与设计模式之应用.pdf 带目录书签

    第十三章 泛型程序设计

    **第十三章 泛型程序设计** 泛型是Java编程语言中的一个重要特性,引入于Java 5.0,它允许在定义类、接口和方法时使用类型参数,从而提高了代码的类型安全性和重用性。泛型的主要目标是提供一种方式来限制容器对象...

    清华大学C++进阶讲义:第10章 泛型程序设计与C++标准模板库.pdf

    ### 清华大学C++进阶讲义:第10章 泛型程序设计与C++标准模板库 #### 泛型程序设计的基本概念 在计算机科学领域中,泛型程序设计是一种允许开发者编写能够处理多种数据类型的代码的技术。这种编程方式的核心在于...

    泛型程序设计与C__STL简介

    泛型程序设计是继面向对象程序设计之后的又一种程序设计方法。 泛型程序设计就是让程序写得通用,能够适用于各种数据类型与数据结构,并且并不损失程序效率。面向对象与泛型程序设计这两种程序设计方法并不矛盾,...

    实验报告 程序设计方法学 C++ STLJava泛型程序设计

    通过对比泛型版本和非泛型版本的程序,我们可以看到泛型程序设计的灵活性和复用性,这使得程序更加简洁高效。同时,这种设计方法也有助于减少错误和提高代码的可维护性。 总之,本实验报告通过实际案例深入探讨了...

    C++设计新思维泛型编程与设计模式之应用

    设计新思维泛型编程与设计模式之应用 不学习泛型觉得自己没学过c++, 不学设计模式觉得自己没有学过面向对象编程

    C++设计新思维:泛型编程与设计模式之应用

    《C++设计新思维:泛型编程与设计模式之应用》这本书深入探讨了C++语言在泛型编程和设计模式中的应用,对于理解和提升C++编程能力有着重要的指导价值。以下将围绕这些主题展开详细讨论。 一、泛型编程 泛型编程是...

    泛型dao 泛型dao 泛型dao

    1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名和方法名) 2)dao接口需要维护的method庞大。 3)业务逻辑改变时,dao需要同时修改两个类文件(接口和实现类) 在本文中,我将为您展示如何...

    面向对象程序设计与泛型程序设计

    3. 类型安全(Type Safety):泛型程序设计通过在编译时检查类型,提高了代码的安全性。这意味着错误的类型使用会在编译阶段被捕获,避免了运行时的类型错误。 4. 模板(Templates):在C++等语言中,模板是实现...

    Cpp设计新思维_泛型编程与设计模式之应用

    《Cpp设计新思维_泛型编程与设计模式之应用》这本书深入探讨了C++编程中的泛型编程和设计模式的应用,对于提升C++开发者的技术水平具有极高的价值。以下是本书涉及的一些关键知识点: 1. 泛型编程:泛型编程是C++中...

    大局观泛型程式设计与STL

    侯捷先生的书《大局观泛型程式设计与STL》很可能详细讲解了如何在实际项目中应用泛型编程和STL,可能包含以下内容: 1. 模板元编程:利用模板在编译时进行计算,实现高效且灵活的代码。 2. STL容器的内部实现机制:...

    设计新思维:泛型编程与设计模式之应用

    C++ 设计新思维:泛型编程与设计模式之应用(简体中文).pdf c++八大金刚: 1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者 2、The c++ programming language----C++之父,技术...

    C#泛型类窗体继承设计器无法使用解决办法,解决案例Demo

    winform窗体继承泛型类时,设计器无法使用解决办法: 当我们使用winform程序时,winform窗体程序和控件程序都是可以通过设计器进行控件拖拽的,但如果我们继承了一个带有泛型的form基类.那么设计器是无法使用的.

    Java泛型设计及其PECS原则解析

    内容概要:本文详细介绍了Java泛型的起源、特性、应用场景及限制。重点讲解了PECS(Producer extends Consumer super)原则及其在实际编码中的重要性和应用。通过具体示例阐述了泛型的引入对代码安全性的提升和...

Global site tag (gtag.js) - Google Analytics