实例解析C++/CLI中的接口与泛型
日期:2007年5月2日 作者: 查看:[大字体 中字体 小字体]-
接口
某些时候,让不相关的类分享一组公有成员,以便产生相同的行为,是非常有用的。一个最基本的方法可能是通过一个公共的基类来定义它们,但这种方法太受局限,因为它要求这些类通过继承而互相关联,另外,它们也许还有着各自的基类,且CLI类型只支持单一类继承。
C++/CLI提供了一种方法,可利用多个类实现一组通用的功能,这就是我们通称的"接口",而一个接口则是一组成员函数的声明。要注意,这些函数只是声明,没有定义,也就是说,一个接口定义了一个由抽象函数组成的类型--这些函数实际上是纯虚函数,且在适当的时候,这些函数由客户类来实现。一个接口可允许不相关的类用同一名称和类型,实现同一功能,而无须要求这些类分享公共基类。在例1中演示了怎样定义一个接口。
例1:
using namespace System;
public interface class ICollection
{
void Put(Object^ o); //隐式public abstract
Object^ Get(); //隐式public abstract
};
一个接口的定义看上去非常像一个类,除了用interface取代了ref或value,所有的函数都没有函数体,且均隐式为public和abstract。按照通常的约定,一个接口名带有起始字母I,后再接一个大写字母。(接口类与接口结构是等价的。)与类相似,一个接口也能有public或private访问可见性。
一个接口能有一个或多个"基接口",在这种情况下,它将继承这些接口中的所有抽象函数,例如,在例2中,接口I2显式继承自I1,而I3显式继承自I1与I2,并通过I2隐式继承自I1。
例2:
interface class I1 { /* ... */ };
interface class I2 : I1 { /* ... */ };
interface class I3 : I1, I2 { /* ... */ };
一个类可像从基类继承时那样,来实现一个接口,见例3。
例3:
public ref class List : ICollection
{
public:
void Put(Object^ o)
{
// ...
}
Object^ Get()
{
// ...
}
// ...
};
一个类能实现一个以上的接口,在这种情况下,必须使用逗号来分隔接口列表,顺序倒不是很重要。当然,一个类在实现一个或多个接口时,也能显式地带有一个基类,在这种情况下,基类通常(但不是必须)写在最前面。
如果一个类实现了一个接口,但没有定义接口中所有的函数,这个类就必须声明为abstract。当然了,任何从抽象类继承而来的类也是抽象类,除非定义了之前的这些抽象函数。
更多内容请看C/C++应用实例专题,或
接口不提供多重继承,与此相比,一个CLI类也只能有一个基类,然而,接口却提供某种与多重类继承相似的功能,但概念与之完全不同,例如,一个类不能从接口中继承函数定义;接口继承体系是独立于类继承体系的--实现同一接口的类也许会、但也许不会通过类继承体系相互关联。
例4演示了一个类:Queue,其与List无关联(但除了这个外,两者都是从Object继承而来的),两者都实现了同一接口。
例4:
- [1] [2] [3] [4] [5] 下一页
-
- 实例解析C++/CLI中的接口与泛型 相关文章:
- ·实例解析C++/CLI中的接口与泛型
- 实例解析C++/CLI中的接口与泛型 相关软件
- 特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作
- 者.文章版权归文章原始作者所有.对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转
- 载的文章有版权问题请联系编辑人员,我们尽快予以更正. 转载请注明来源:http://www.hackhome.com
上一篇:在C++程序中添加逻辑流程控制
精品推荐
热点TOP10
- ·用c#监控网络流量
- ·C#编写的windows计算器-源代码
- ·C #中的几个线程同步对象方法
- ·飞机订票系统设计
- ·C/C++笔试、面试题目大汇总
- ·《俄罗斯方块》程序编写详解
- ·Windows API-GDI入门基础知识详解(2)
- ·socket编程原理
- ·打字游戏
- ·七年IT奋斗纪实及感悟
- ·无废话C#设计模式之九:Proxy
- ·牛顿和拉格朗日插值算法
- ·VC++动态链接库编程之MFC扩展 DLL
- ·C# 操作文件
- ·如何用C#编写文本编辑器
- ·c#操作word表格
- ·编程特例篇——LOGO语言
- ·Raw Socket(原始套接字)实现Sniffer(嗅探)
- ·C#实现窗口最小化到系统托盘
- ·C# 学习使用ErrorProvider
特别推荐
- ·C#程序开发中的常用函数汇总
- ·C#数据库操作的三种经典用法
- ·C/C++笔试、面试题目大汇总
- ·Beej的网络socket编程指南
- ·socket编程原理
- ·C语言的常用库函数使用方法分析及用途
- ·在C语言中如何处理时间和日期
- ·C++设计模式之Singleton
- ·VC++动态链接库编程之MFC扩展 DLL
- ·TCP/IP网络重复型服务器通信软件的设计
- ·DirectX游戏开发入门
- ·经典与现代的结合:在MFC中集成RAD .NET框架
- ·Windows API-GDI入门基础知识详解(2)
- ·Visual C++ 入门精解
- ·C#基础概念二十五问
- ·用C#实现pdf文件的完整性验证
- ·成为嵌入式程序员应知道的0x10个问题
- ·TCP/IP编程实现远程文件传输
- ·几个C#编程的小技巧
- ·C# 编码规范和编程好习惯
