C++/C | Java | .Net/Windows | Linux/Unix | 开源 | 其他
首页 - 编程
编程
全文搜索:   

Stan Lippman:C++/CLI全景体验
作者: csdn
2005-01-25 11:26:41



单一的根基类为运行时类型查询和代码生成(通常被称为反射)提供了支持机制 [ 译注 2] ,这是 ISO-C++ 所缺乏的。我们将在今后一系列文章中详细讨论它们给 CLI 带来的动态编程特性。

除此之外, CLI 还支持一种被称作特性元数据( attribute metadata )的构造,它允许我们定义一些特性类,然后将其关联在 CLI 类型和当前正在运行的程序构造上——这有效地扩展了内建于 CLI 中的类型和程序构造。这些用户定义的特性也可以通过反射机制来获得,应用程序则可以根据它们的值来进行条件逻辑判断。这也是 C++/CLI 为 C++ 带来的动态组件编程的一部分。再次强调一遍,类型反射和特性将在我们的专栏中得到深入的讨论。

那么,对于大家来说怎样学习 C++/CLI 呢?学习 C++/CLI 的其中一个要点便是学习底层的通用类型系统( CTS ),它包括以下三种类型:

1. 多态引用类型,其用于所有的类继承。我们将在早期的一些专栏文章中讨论它们。

2. 非多态值类型,其用于实现一些类似于数值类型那样的、对运行时效率要求比较高的类型。我们将其放在引用类型之后讨论。

3. 抽象接口类型,其用于定义一组供引用类型或者值类型实现的操作。接口为多继承提供了一种别样的设计模式。我们也将有一系列专栏文章来讨论它们。

将 CTS 映射为一组语言内置类型对于所有的 CLI 语言都适用,虽然各种语言所使用的语法各不相同。这也是一门 CLI 语言所要面对的第一个设计层面。例如,在 C# 中,我们可以用以下代码来定义一个抽象基类型 Shape (一些具体的几何对象将继承自它)。

public abstract class Shape

而在 C++/CLI 中,我们用下面的代码来定义同样的类型。

public ref class Shape abstract ;

除了语法差异之外,两种声明的实际表示完全相同。类似地,在 C# 中,我们可以用下面的代码来定义一个具体类 Point2D 。

public struct Point2D

而在 C++/CLI 中,我们用下面的代码来定义同样的类型。

public value class Point2D ;

我们对语法的选择基于如下的出发点:以一种直观的设计视角将 CLI 类型和 ISO-C++ 类型紧密地集成在一起。

因此,简单地说一种语言比另一种语言更接近底层 CLI 并不正确。相反,每一门 CLI 语言都只是表达了自己对底层 CLI 对象模型的一种视图。

【上一页】 【下一页】
声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
近期相关报道:
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
Copyright (c) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号