设为首页 加入收藏

TOP

9.9.3 接口类
2013-10-07 12:41:50 来源: 作者: 【 】 浏览:67
Tags:9.9.3 接口

9.9.3  接口类

接口类的定义看起来非常类似于引用类的定义,但它是个完全不同的概念。接口类指定一组将由其他类实现的函数,以提供标准化的、可提供某种具体功能的方法。数值类和引用类都可以实现接口。接口不定义任何自有的函数成员,其指定的函数是由实现该接口的各个类定义的。

我们在通用函数的上下文中已经遇到过System::Comparable接口,当时将IComparable接口指定为一项约束条件。System::Comparable接口指定了用于比较对象的CompareTo()函数,因此所有实现该接口的类都拥有相同的比较对象的机制。我们为某个类指定应实现的接口的方式与指定基类的方式相同。例如,我们可以像下面这样使上一个示例中的Box类实现System::IComparable接口:

  1. ref class Box : Container, IComparable // Derived class  
  2. {  
  3. public:  
  4. // The function specified by IComparable interface  
  5. virtual int CompareTo(Object^ obj)  
  6. {  
  7. if(Volu me() < safe_cast<Box^>(obj)->Volume())  
  8. return -1;  
  9. else if(Volume() > safe_cast<Box^>(obj)->Volume())  
  10. return 1;  
  11. else  
  12. return 0;  
  13. }  
  14.  
  15. // Rest of the class as before...  
  16. }; 
接口名跟在基类名Container后面。如果没有基类,则这里单独出现接口名。引用类只能有一个基类,但可以实现任意多的接口。这样的类必须定义宣称要实现的各个接口指定的每一个函数。IComparable接口仅仅指定了一个函数,但接口中允许有任意多个函数。Box类现在定义了CompareTo()函数,使用的签名与IComparable接口为该函数指定的相同。因为CompareTo()函数的形参属于Object^类型,所以我们必须将其强制转换为Box^类型,之后才能访问该句柄引用的Box对象的成员。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇9.9.4 定义接口类(1) 下一篇9.9.8 引用类的析构函数和终结器

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: