实现C++接口映射浅析

开发 后端
类必须为在基类表中列出的所有接口的成员提供具体的实现。在类中定位C#接口成员的实现称之为C++接口映射。

C++接口用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。本文我们来了解显式实现C#接口成员的主要方法,下面进行详细说明介绍。。。

映射,数学上表示一一对应的函数关系。C++接口映射的含义也是一样,接口通过类来实现,那么对于在接口中定义的每一个成员,都应该对应着类的一个成员来为它提供具体的实现。

类的成员及其C++接口映射成员之间必须满足下列条件:

◆如果A和B都是成员方法,那么A和B的名称、类型、形参表(包括参数个数和每一个参数的类型)都应该是一致的。

◆如果A和B都是属性,那么A和B的名称、类型应当一致,而且A和B的访问器也是类似的。但如果A不是显式接口成员执行体,A允许增加自己的访问器。

◆如果A和B都是时间那么A和B的名称、类型应当一致。

◆如果A和B都是索引指示器,那么A和B的类型、形参表(包括参数个数和每一个参数的类型)应当一致。而且A和B的访问器也是类似的。但如果A不是显式接口成员执行体,A允许增加自己的访问器。

那么,对于一个C++接口成员,怎样确定由哪一个类的成员来实现呢?即一个接口成员映射的是哪一个类的成员?在这里,我们叙述一下接口映射的过程。假设类C实现了一个接口IInterface,Member是接口IInterface中的一个成员,在定位由谁来实现接口成员Member,即Member的映射过程是这样的:

1、如果C中存在着一个显式接口成员执行体,该执行体与接口IInterface 及其成员Member相对应,则由它来实现Member 成员。

2、如果条件(1)不满足,且C中存在着一个非静态的公有成员,该成员与接口成员Member相对应,则由它来实现Member 成员。

3、如果上述条件仍不满足,则在类C定义的基类列表中寻找一个C 的基类D,用D来代替C。

4、重复步骤1-3 ,遍历C的所有直接基类和非直接基类,直到找到一个满足条件的类的成员。

5、如果仍然没有找到,则报告错误。

下面是一个调用基类方法来实现接口成员的例子。类Class2 实现了C++接口Interface1,类Class2 的基类Class1 的成员也参与了接口的映射,也就是说类Class2 在对接口Interface1进行实现时,使用了类Class1提供的成员方法F来实现接口Interface1的成员方法F:

【编辑推荐】

  1. 如何正确编写C++项目开发编写项目计划书
  2. 对C++库函数进行学习探索总结笔记
  3. 深度演示C++语言的种种高安全性
  4. 详细介绍如何准确无误的编写C++语言
  5. 深度演示C++语言的种种高安全性
责任编辑:chenqingxiang 来源: 计世网
相关推荐

2010-01-26 09:50:30

C++接口

2009-08-31 16:48:02

C#实现IDispos

2009-09-01 18:29:24

C#实现多个接口

2010-01-18 14:41:52

Visual C++开

2010-01-21 09:34:57

C++语法

2010-01-27 16:05:06

C++堆栈

2009-08-27 18:09:49

C#接口的实现

2009-08-27 14:29:28

显式实现接口

2010-01-22 13:59:34

Visual C++应

2010-01-20 10:19:55

C++数组

2010-01-27 17:16:52

C++构造函数

2009-08-24 11:02:52

C#接口映射

2021-10-19 14:04:28

C++类型数字

2010-01-26 14:35:11

C++关键字

2010-01-25 14:18:46

C++对象模型

2010-02-06 17:39:52

C++ strtok

2010-01-21 16:18:06

C++语言

2010-01-21 13:48:30

C++基类

2010-02-03 17:23:27

C++使用接口

2010-01-27 15:46:15

学习C++效率
点赞
收藏

51CTO技术栈公众号